home *** CD-ROM | disk | FTP | other *** search
MacBinary | 1994-03-22 | 43.0 KB | [TEXT/MPS ] |
open in:
MacOS 8.1
|
Win98
|
DOS
view JSON data
|
view as text
This file was processed as: MacBinary
(archive/macBinary).
You can browse this item here: perl.c
Confidence | Program | Detection | Match Type | Support
|
---|
66%
| dexvert
| Compact Compressed (Unix) (archive/compact)
| ext
| Supported |
10%
| dexvert
| MacBinary (archive/macBinary)
| fallback
| Supported |
10%
| dexvert
| Jesper Olsen Module (music/jesperOlsen)
| magic
| Supported |
1%
| dexvert
| Text File (text/txt)
| fallback
| Supported |
100%
| file
| MacBinary II, inited, Tue Mar 22 13:38:54 1994, modified Tue Mar 22 13:38:54 1994, creator 'MPS ', type ASCII, 43335 bytes "perl.c" , at 0xa9c7 428 bytes resource
| default (weak)
| |
99%
| file
| data
| default
| |
49%
| TrID
| Macintosh plain text (MacBinary)
| default
| |
33%
| TrID
| TTComp archive compressed (bin-4K)
| default (weak)
| |
16%
| TrID
| MacBinary 2
| default (weak)
| |
100%
| siegfried
| fmt/1762 MacBinary (II)
| default
| |
100%
| lsar
| MacBinary
| default
|
|
id metadata |
---|
key | value |
---|
macFileType | [TEXT] |
macFileCreator | [MPS ] |
hex view+--------+-------------------------+-------------------------+--------+--------+
|00000000| 00 06 70 65 72 6c 2e 63 | 00 00 00 00 00 00 00 00 |..perl.c|........|
|00000010| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000020| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000030| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000040| 00 54 45 58 54 4d 50 53 | 20 01 00 00 00 00 00 00 |.TEXTMPS| .......|
|00000050| 00 00 00 00 00 a9 47 00 | 00 01 ac a9 b4 eb be a9 |......G.|........|
|00000060| b4 eb be 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000070| 00 00 00 00 00 00 00 00 | 00 00 81 81 2e f3 00 00 |........|........|
|00000080| 63 68 61 72 20 72 63 73 | 69 64 5b 5d 20 3d 20 22 |char rcs|id[] = "|
|00000090| 24 52 43 53 66 69 6c 65 | 3a 20 70 65 72 6c 2e 63 |$RCSfile|: perl.c|
|000000a0| 2c 76 20 24 24 52 65 76 | 69 73 69 6f 6e 3a 20 34 |,v $$Rev|ision: 4|
|000000b0| 2e 30 2e 31 2e 38 20 24 | 24 44 61 74 65 3a 20 31 |.0.1.8 $|$Date: 1|
|000000c0| 39 39 33 2f 30 32 2f 30 | 35 20 31 39 3a 33 39 3a |993/02/0|5 19:39:|
|000000d0| 33 30 20 24 5c 6e 50 61 | 74 63 68 20 6c 65 76 65 |30 $\nPa|tch leve|
|000000e0| 6c 3a 20 23 23 23 5c 6e | 22 3b 0d 2f 2a 0d 20 2a |l: ###\n|";./*. *|
|000000f0| 20 20 20 20 43 6f 70 79 | 72 69 67 68 74 20 28 63 | Copy|right (c|
|00000100| 29 20 31 39 39 31 2c 20 | 4c 61 72 72 79 20 57 61 |) 1991, |Larry Wa|
|00000110| 6c 6c 0d 20 2a 0d 20 2a | 20 20 20 20 59 6f 75 20 |ll. *. *| You |
|00000120| 6d 61 79 20 64 69 73 74 | 72 69 62 75 74 65 20 75 |may dist|ribute u|
|00000130| 6e 64 65 72 20 74 68 65 | 20 74 65 72 6d 73 20 6f |nder the| terms o|
|00000140| 66 20 74 68 65 20 50 65 | 72 6c 20 41 72 74 69 73 |f the Pe|rl Artis|
|00000150| 74 69 63 20 4c 69 63 65 | 6e 73 65 2c 20 0d 20 2a |tic Lice|nse, . *|
|00000160| 20 20 20 20 61 73 20 73 | 70 65 63 69 66 69 65 64 | as s|pecified|
|00000170| 20 69 6e 20 74 68 65 20 | 52 45 41 44 4d 45 20 66 | in the |README f|
|00000180| 69 6c 65 2e 0d 20 2a 0d | 20 2a 20 24 4c 6f 67 3a |ile.. *.| * $Log:|
|00000190| 09 70 65 72 6c 2e 63 2c | 76 20 24 0d 20 2a 20 52 |.perl.c,|v $. * R|
|000001a0| 65 76 69 73 69 6f 6e 20 | 34 2e 30 2e 31 2e 37 20 |evision |4.0.1.7 |
|000001b0| 20 31 39 39 32 2f 30 36 | 2f 30 38 20 20 31 34 3a | 1992/06|/08 14:|
|000001c0| 35 30 3a 33 39 20 20 6c | 77 61 6c 6c 0d 20 2a 20 |50:39 l|wall. * |
|000001d0| 70 61 74 63 68 32 30 3a | 20 50 45 52 4c 4c 49 42 |patch20:| PERLLIB|
|000001e0| 20 6e 6f 77 20 73 75 70 | 70 6f 72 74 73 20 6d 75 | now sup|ports mu|
|000001f0| 6c 74 69 70 6c 65 20 64 | 69 72 65 63 74 6f 72 69 |ltiple d|irectori|
|00000200| 65 73 0d 20 2a 20 70 61 | 74 63 68 32 30 3a 20 72 |es. * pa|tch20: r|
|00000210| 75 6e 6e 69 6e 67 20 74 | 61 69 6e 74 70 65 72 6c |unning t|aintperl|
|00000220| 20 65 78 70 6c 69 63 69 | 74 6c 79 20 6e 6f 77 20 | explici|tly now |
|00000230| 64 6f 65 73 20 63 68 65 | 63 6b 73 20 65 76 65 6e |does che|cks even|
|00000240| 20 69 66 20 24 3c 20 3d | 3d 20 24 3e 0d 20 2a 20 | if $< =|= $>. * |
|00000250| 70 61 74 63 68 32 30 3a | 20 2d 65 20 27 63 6d 64 |patch20:| -e 'cmd|
|00000260| 27 20 6e 6f 20 6c 6f 6e | 67 65 72 20 66 61 69 6c |' no lon|ger fail|
|00000270| 73 20 73 69 6c 65 6e 74 | 6c 79 20 69 66 20 2f 74 |s silent|ly if /t|
|00000280| 6d 70 20 72 75 6e 73 20 | 6f 75 74 20 6f 66 20 73 |mp runs |out of s|
|00000290| 70 61 63 65 0d 20 2a 20 | 70 61 74 63 68 32 30 3a |pace. * |patch20:|
|000002a0| 20 70 65 72 6c 20 2d 50 | 20 6e 6f 77 20 75 73 65 | perl -P| now use|
|000002b0| 73 20 6c 6f 63 61 74 69 | 6f 6e 20 6f 66 20 73 65 |s locati|on of se|
|000002c0| 64 20 64 65 74 65 72 6d | 69 6e 65 64 20 62 79 20 |d determ|ined by |
|000002d0| 43 6f 6e 66 69 67 75 72 | 65 0d 20 2a 20 70 61 74 |Configur|e. * pat|
|000002e0| 63 68 32 30 3a 20 66 6f | 72 6d 20 66 65 65 64 20 |ch20: fo|rm feed |
|000002f0| 66 6f 72 20 66 6f 72 6d | 61 74 73 20 69 73 20 6e |for form|ats is n|
|00000300| 6f 77 20 73 70 65 63 69 | 66 69 61 62 6c 65 20 76 |ow speci|fiable v|
|00000310| 69 61 20 24 5e 4c 0d 20 | 2a 20 70 61 74 63 68 32 |ia $^L. |* patch2|
|00000320| 30 3a 20 70 61 72 61 67 | 72 61 70 68 20 6d 6f 64 |0: parag|raph mod|
|00000330| 65 20 6e 6f 77 20 73 6b | 69 70 73 20 65 78 74 72 |e now sk|ips extr|
|00000340| 61 20 6e 65 77 6c 69 6e | 65 73 20 61 75 74 6f 6d |a newlin|es autom|
|00000350| 61 74 69 63 61 6c 6c 79 | 0d 20 2a 20 70 61 74 63 |atically|. * patc|
|00000360| 68 32 30 3a 20 65 76 61 | 6c 20 22 31 20 23 63 6f |h20: eva|l "1 #co|
|00000370| 6d 6d 65 6e 74 22 20 64 | 69 64 6e 27 74 20 77 6f |mment" d|idn't wo|
|00000380| 72 6b 0d 20 2a 20 70 61 | 74 63 68 32 30 3a 20 63 |rk. * pa|tch20: c|
|00000390| 6f 75 6c 64 6e 27 74 20 | 72 65 71 75 69 72 65 20 |ouldn't |require |
|000003a0| 2e 20 66 69 6c 65 73 0d | 20 2a 20 70 61 74 63 68 |. files.| * patch|
|000003b0| 32 30 3a 20 73 65 6d 61 | 6e 74 69 63 20 63 6f 6d |20: sema|ntic com|
|000003c0| 70 69 6c 61 74 69 6f 6e | 20 65 72 72 6f 72 73 20 |pilation| errors |
|000003d0| 64 69 64 6e 27 74 20 61 | 62 6f 72 74 20 65 78 65 |didn't a|bort exe|
|000003e0| 63 75 74 69 6f 6e 0d 20 | 2a 20 0d 20 2a 20 52 65 |cution. |* . * Re|
|000003f0| 76 69 73 69 6f 6e 20 34 | 2e 30 2e 31 2e 36 20 20 |vision 4|.0.1.6 |
|00000400| 39 31 2f 31 31 2f 31 31 | 20 20 31 36 3a 33 38 3a |91/11/11| 16:38:|
|00000410| 34 35 20 20 6c 77 61 6c | 6c 0d 20 2a 20 70 61 74 |45 lwal|l. * pat|
|00000420| 63 68 31 39 3a 20 64 65 | 66 61 75 6c 74 20 61 72 |ch19: de|fault ar|
|00000430| 67 20 66 6f 72 20 73 68 | 69 66 74 20 77 61 73 20 |g for sh|ift was |
|00000440| 77 72 6f 6e 67 20 61 66 | 74 65 72 20 66 69 72 73 |wrong af|ter firs|
|00000450| 74 20 73 75 62 72 6f 75 | 74 69 6e 65 20 64 65 66 |t subrou|tine def|
|00000460| 69 6e 69 74 69 6f 6e 0d | 20 2a 20 70 61 74 63 68 |inition.| * patch|
|00000470| 31 39 3a 20 6f 70 2f 72 | 65 67 65 78 70 2e 74 20 |19: op/r|egexp.t |
|00000480| 66 61 69 6c 65 64 20 66 | 72 6f 6d 20 6d 69 73 73 |failed f|rom miss|
|00000490| 69 6e 67 20 61 72 67 20 | 74 6f 20 62 63 6d 70 28 |ing arg |to bcmp(|
|000004a0| 29 0d 20 2a 20 0d 20 2a | 20 52 65 76 69 73 69 6f |). * . *| Revisio|
|000004b0| 6e 20 34 2e 30 2e 31 2e | 35 20 20 39 31 2f 31 31 |n 4.0.1.|5 91/11|
|000004c0| 2f 30 35 20 20 31 38 3a | 30 33 3a 33 32 20 20 6c |/05 18:|03:32 l|
|000004d0| 77 61 6c 6c 0d 20 2a 20 | 70 61 74 63 68 31 31 3a |wall. * |patch11:|
|000004e0| 20 72 61 6e 64 6f 6d 20 | 63 6c 65 61 6e 75 70 0d | random |cleanup.|
|000004f0| 20 2a 20 70 61 74 63 68 | 31 31 3a 20 24 30 20 77 | * patch|11: $0 w|
|00000500| 61 73 20 62 65 69 6e 67 | 20 74 72 75 6e 63 61 74 |as being| truncat|
|00000510| 65 64 20 61 74 20 74 69 | 6d 65 73 0d 20 2a 20 70 |ed at ti|mes. * p|
|00000520| 61 74 63 68 31 31 3a 20 | 63 70 70 73 74 64 69 6e |atch11: |cppstdin|
|00000530| 20 6e 6f 77 20 69 6e 73 | 74 61 6c 6c 65 64 20 6f | now ins|talled o|
|00000540| 75 74 73 69 64 65 20 6f | 66 20 73 6f 75 72 63 65 |utside o|f source|
|00000550| 20 64 69 72 65 63 74 6f | 72 79 0d 20 2a 20 70 61 | directo|ry. * pa|
|00000560| 74 63 68 31 31 3a 20 2d | 50 20 64 69 64 6e 27 74 |tch11: -|P didn't|
|00000570| 20 61 6c 6c 6f 77 20 75 | 73 65 20 6f 66 20 23 65 | allow u|se of #e|
|00000580| 6c 69 66 20 6f 72 20 23 | 75 6e 64 65 66 0d 20 2a |lif or #|undef. *|
|00000590| 20 70 61 74 63 68 31 31 | 3a 20 70 72 65 70 61 72 | patch11|: prepar|
|000005a0| 65 64 20 66 6f 72 20 63 | 74 79 70 65 20 69 6d 70 |ed for c|type imp|
|000005b0| 6c 65 6d 65 6e 74 61 74 | 69 6f 6e 73 20 74 68 61 |lementat|ions tha|
|000005c0| 74 20 64 6f 6e 27 74 20 | 64 65 66 69 6e 65 20 69 |t don't |define i|
|000005d0| 73 61 73 63 69 69 28 29 | 0d 20 2a 20 70 61 74 63 |sascii()|. * patc|
|000005e0| 68 31 31 3a 20 61 64 64 | 65 64 20 65 76 61 6c 20 |h11: add|ed eval |
|000005f0| 7b 7d 0d 20 2a 20 70 61 | 74 63 68 31 31 3a 20 65 |{}. * pa|tch11: e|
|00000600| 76 61 6c 20 63 6f 6e 66 | 75 73 65 64 20 62 79 20 |val conf|used by |
|00000610| 73 74 72 69 6e 67 20 63 | 6f 6e 74 61 69 6e 69 6e |string c|ontainin|
|00000620| 67 20 6e 75 6c 6c 0d 20 | 2a 20 0d 20 2a 20 52 65 |g null. |* . * Re|
|00000630| 76 69 73 69 6f 6e 20 34 | 2e 30 2e 31 2e 34 20 20 |vision 4|.0.1.4 |
|00000640| 39 31 2f 30 36 2f 31 30 | 20 20 30 31 3a 32 33 3a |91/06/10| 01:23:|
|00000650| 30 37 20 20 6c 77 61 6c | 6c 0d 20 2a 20 70 61 74 |07 lwal|l. * pat|
|00000660| 63 68 31 30 3a 20 70 65 | 72 6c 20 2d 76 20 70 72 |ch10: pe|rl -v pr|
|00000670| 69 6e 74 65 64 20 69 6e | 63 6f 72 72 65 63 74 20 |inted in|correct |
|00000680| 63 6f 70 79 72 69 67 68 | 74 20 6e 6f 74 69 63 65 |copyrigh|t notice|
|00000690| 0d 20 2a 20 0d 20 2a 20 | 52 65 76 69 73 69 6f 6e |. * . * |Revision|
|000006a0| 20 34 2e 30 2e 31 2e 33 | 20 20 39 31 2f 30 36 2f | 4.0.1.3| 91/06/|
|000006b0| 30 37 20 20 31 31 3a 34 | 30 3a 31 38 20 20 6c 77 |07 11:4|0:18 lw|
|000006c0| 61 6c 6c 0d 20 2a 20 70 | 61 74 63 68 34 3a 20 63 |all. * p|atch4: c|
|000006d0| 68 61 6e 67 65 64 20 6f | 6c 64 20 24 5e 50 20 74 |hanged o|ld $^P t|
|000006e0| 6f 20 24 5e 58 0d 20 2a | 20 0d 20 2a 20 52 65 76 |o $^X. *| . * Rev|
|000006f0| 69 73 69 6f 6e 20 34 2e | 30 2e 31 2e 32 20 20 39 |ision 4.|0.1.2 9|
|00000700| 31 2f 30 36 2f 30 37 20 | 20 31 31 3a 32 36 3a 31 |1/06/07 | 11:26:1|
|00000710| 36 20 20 6c 77 61 6c 6c | 0d 20 2a 20 70 61 74 63 |6 lwall|. * patc|
|00000720| 68 34 3a 20 6e 65 77 20 | 63 6f 70 79 72 69 67 68 |h4: new |copyrigh|
|00000730| 74 20 6e 6f 74 69 63 65 | 0d 20 2a 20 70 61 74 63 |t notice|. * patc|
|00000740| 68 34 3a 20 61 64 64 65 | 64 20 24 5e 50 20 76 61 |h4: adde|d $^P va|
|00000750| 72 69 61 62 6c 65 20 74 | 6f 20 63 6f 6e 74 72 6f |riable t|o contro|
|00000760| 6c 20 63 61 6c 6c 69 6e | 67 20 6f 66 20 70 65 72 |l callin|g of per|
|00000770| 6c 64 62 20 72 6f 75 74 | 69 6e 65 73 0d 20 2a 20 |ldb rout|ines. * |
|00000780| 70 61 74 63 68 34 3a 20 | 61 64 64 65 64 20 24 5e |patch4: |added $^|
|00000790| 46 20 76 61 72 69 61 62 | 6c 65 20 74 6f 20 73 70 |F variab|le to sp|
|000007a0| 65 63 69 66 79 20 6d 61 | 78 69 6d 75 6d 20 73 79 |ecify ma|ximum sy|
|000007b0| 73 74 65 6d 20 66 64 2c | 20 64 65 66 61 75 6c 74 |stem fd,| default|
|000007c0| 20 32 0d 20 2a 20 70 61 | 74 63 68 34 3a 20 64 65 | 2. * pa|tch4: de|
|000007d0| 62 75 67 67 65 72 20 6c | 6f 73 74 20 74 72 61 63 |bugger l|ost trac|
|000007e0| 6b 20 6f 66 20 6c 69 6e | 65 73 20 69 6e 20 65 76 |k of lin|es in ev|
|000007f0| 61 6c 0d 20 2a 20 0d 20 | 2a 20 52 65 76 69 73 69 |al. * . |* Revisi|
|00000800| 6f 6e 20 34 2e 30 2e 31 | 2e 31 20 20 39 31 2f 30 |on 4.0.1|.1 91/0|
|00000810| 34 2f 31 31 20 20 31 37 | 3a 34 39 3a 30 35 20 20 |4/11 17|:49:05 |
|00000820| 6c 77 61 6c 6c 0d 20 2a | 20 70 61 74 63 68 31 3a |lwall. *| patch1:|
|00000830| 20 66 69 78 65 64 20 75 | 6e 64 65 66 69 6e 65 64 | fixed u|ndefined|
|00000840| 20 65 6e 76 69 72 6f 6e | 20 70 72 6f 62 6c 65 6d | environ| problem|
|00000850| 0d 20 2a 20 0d 20 2a 20 | 52 65 76 69 73 69 6f 6e |. * . * |Revision|
|00000860| 20 34 2e 30 20 20 39 31 | 2f 30 33 2f 32 30 20 20 | 4.0 91|/03/20 |
|00000870| 30 31 3a 33 37 3a 34 34 | 20 20 6c 77 61 6c 6c 0d |01:37:44| lwall.|
|00000880| 20 2a 20 34 2e 30 20 62 | 61 73 65 6c 69 6e 65 2e | * 4.0 b|aseline.|
|00000890| 0d 20 2a 20 0d 20 2a 2f | 0d 0d 2f 2a 53 55 50 50 |. * . */|../*SUPP|
|000008a0| 52 45 53 53 20 35 36 30 | 2a 2f 0d 0d 23 69 66 64 |RESS 560|*/..#ifd|
|000008b0| 65 66 20 6d 61 63 69 6e | 74 6f 73 68 0d 0d 63 68 |ef macin|tosh..ch|
|000008c0| 61 72 20 2a 20 67 65 74 | 65 6e 76 28 29 3b 0d 63 |ar * get|env();.c|
|000008d0| 68 61 72 20 2a 2a 69 6e | 69 74 5f 65 6e 76 28 63 |har **in|it_env(c|
|000008e0| 68 61 72 20 2a 2a 29 3b | 0d 0d 23 69 66 6e 64 65 |har **);|..#ifnde|
|000008f0| 66 20 4d 41 43 5f 53 54 | 41 4e 44 41 4c 4f 4e 45 |f MAC_ST|ANDALONE|
|00000900| 0d 23 69 6e 63 6c 75 64 | 65 20 3c 52 65 73 6f 75 |.#includ|e <Resou|
|00000910| 72 63 65 73 2e 68 3e 0d | 0d 73 68 6f 72 74 09 67 |rces.h>.|.short.g|
|00000920| 41 70 70 46 69 6c 65 3b | 0d 73 68 6f 72 74 09 67 |AppFile;|.short.g|
|00000930| 50 72 65 66 73 46 69 6c | 65 3b 0d 76 6f 69 64 20 |PrefsFil|e;.void |
|00000940| 2a 20 09 67 53 61 63 72 | 69 66 69 63 69 61 6c 47 |* .gSacr|ificialG|
|00000950| 6f 61 74 20 3d 20 28 76 | 6f 69 64 20 2a 29 20 2d |oat = (v|oid *) -|
|00000960| 31 3b 0d 0d 23 69 66 64 | 65 66 20 50 45 52 46 4f |1;..#ifd|ef PERFO|
|00000970| 52 4d 41 4e 43 45 0d 23 | 69 6e 63 6c 75 64 65 20 |RMANCE.#|include |
|00000980| 3c 50 65 72 66 2e 68 3e | 0d 0d 54 50 32 50 65 72 |<Perf.h>|..TP2Per|
|00000990| 66 47 6c 6f 62 61 6c 73 | 09 67 50 65 72 66 47 6c |fGlobals|.gPerfGl|
|000009a0| 6f 62 61 6c 73 3b 0d 0d | 76 6f 69 64 20 46 69 6e |obals;..|void Fin|
|000009b0| 61 6c 69 7a 65 50 65 72 | 66 28 29 0d 7b 0d 20 20 |alizePer|f().{. |
|000009c0| 20 20 50 65 72 66 44 75 | 6d 70 28 67 50 65 72 66 | PerfDu|mp(gPerf|
|000009d0| 47 6c 6f 62 61 6c 73 2c | 20 22 5c 70 50 65 72 66 |Globals,| "\pPerf|
|000009e0| 50 65 72 6c 2e 4f 75 74 | 22 2c 20 74 72 75 65 2c |Perl.Out|", true,|
|000009f0| 20 38 30 29 3b 0d 20 20 | 20 20 54 65 72 6d 50 65 | 80);. | TermPe|
|00000a00| 72 66 28 67 50 65 72 66 | 47 6c 6f 62 61 6c 73 29 |rf(gPerf|Globals)|
|00000a10| 3b 0d 7d 0d 0d 23 65 6e | 64 69 66 0d 23 65 6c 73 |;.}..#en|dif.#els|
|00000a20| 65 0d 23 64 65 66 69 6e | 65 20 52 45 53 4f 4c 56 |e.#defin|e RESOLV|
|00000a30| 45 5f 4d 41 43 5f 43 4f | 4e 46 4c 49 43 54 53 0d |E_MAC_CO|NFLICTS.|
|00000a40| 23 69 6e 63 6c 75 64 65 | 20 3c 44 69 61 6c 6f 67 |#include| <Dialog|
|00000a50| 73 2e 68 3e 0d 23 65 6e | 64 69 66 0d 0d 23 65 6c |s.h>.#en|dif..#el|
|00000a60| 73 65 0d 63 68 61 72 20 | 2a 20 67 65 74 65 6e 76 |se.char |* getenv|
|00000a70| 28 29 3b 0d 23 65 6e 64 | 69 66 0d 0d 23 69 6e 63 |();.#end|if..#inc|
|00000a80| 6c 75 64 65 20 22 45 58 | 54 45 52 4e 2e 68 22 0d |lude "EX|TERN.h".|
|00000a90| 23 69 6e 63 6c 75 64 65 | 20 22 70 65 72 6c 2e 68 |#include| "perl.h|
|00000aa0| 22 0d 23 69 6e 63 6c 75 | 64 65 20 22 70 65 72 6c |".#inclu|de "perl|
|00000ab0| 79 2e 68 22 0d 23 69 6e | 63 6c 75 64 65 20 22 70 |y.h".#in|clude "p|
|00000ac0| 61 74 63 68 6c 65 76 65 | 6c 2e 68 22 0d 0d 23 69 |atchleve|l.h"..#i|
|00000ad0| 66 64 65 66 20 49 41 4d | 53 55 49 44 0d 23 69 66 |fdef IAM|SUID.#if|
|00000ae0| 6e 64 65 66 20 44 4f 53 | 55 49 44 0d 23 64 65 66 |ndef DOS|UID.#def|
|00000af0| 69 6e 65 20 44 4f 53 55 | 49 44 0d 23 65 6e 64 69 |ine DOSU|ID.#endi|
|00000b00| 66 0d 23 65 6e 64 69 66 | 0d 0d 23 69 66 64 65 66 |f.#endif|..#ifdef|
|00000b10| 20 53 45 54 55 49 44 5f | 53 43 52 49 50 54 53 5f | SETUID_|SCRIPTS_|
|00000b20| 41 52 45 5f 53 45 43 55 | 52 45 5f 4e 4f 57 0d 23 |ARE_SECU|RE_NOW.#|
|00000b30| 69 66 64 65 66 20 44 4f | 53 55 49 44 0d 23 75 6e |ifdef DO|SUID.#un|
|00000b40| 64 65 66 20 44 4f 53 55 | 49 44 0d 23 65 6e 64 69 |def DOSU|ID.#endi|
|00000b50| 66 0d 23 65 6e 64 69 66 | 0d 0d 73 74 61 74 69 63 |f.#endif|..static|
|00000b60| 20 63 68 61 72 2a 20 6d | 6f 72 65 73 77 69 74 63 | char* m|oreswitc|
|00000b70| 68 65 73 28 29 3b 0d 73 | 74 61 74 69 63 20 76 6f |hes();.s|tatic vo|
|00000b80| 69 64 20 69 6e 63 70 75 | 73 68 28 29 3b 0d 73 74 |id incpu|sh();.st|
|00000b90| 61 74 69 63 20 63 68 61 | 72 2a 20 63 64 64 69 72 |atic cha|r* cddir|
|00000ba0| 3b 0d 73 74 61 74 69 63 | 20 62 6f 6f 6c 20 6d 69 |;.static| bool mi|
|00000bb0| 6e 75 73 5f 63 3b 0d 73 | 74 61 74 69 63 20 63 68 |nus_c;.s|tatic ch|
|00000bc0| 61 72 20 70 61 74 63 68 | 6c 65 76 65 6c 5b 36 5d |ar patch|level[6]|
|00000bd0| 3b 0d 73 74 61 74 69 63 | 20 63 68 61 72 20 2a 6e |;.static| char *n|
|00000be0| 72 73 20 3d 20 22 5c 6e | 22 3b 0d 73 74 61 74 69 |rs = "\n|";.stati|
|00000bf0| 63 20 69 6e 74 20 6e 72 | 73 63 68 61 72 20 3d 20 |c int nr|schar = |
|00000c00| 27 5c 6e 27 3b 20 20 20 | 20 20 20 2f 2a 20 66 69 |'\n'; | /* fi|
|00000c10| 6e 61 6c 20 63 68 61 72 | 20 6f 66 20 72 73 2c 20 |nal char| of rs, |
|00000c20| 6f 72 20 30 37 37 37 20 | 69 66 20 6e 6f 6e 65 20 |or 0777 |if none |
|00000c30| 2a 2f 0d 73 74 61 74 69 | 63 20 69 6e 74 20 6e 72 |*/.stati|c int nr|
|00000c40| 73 6c 65 6e 20 3d 20 31 | 3b 0d 0d 6d 61 69 6e 28 |slen = 1|;..main(|
|00000c50| 61 72 67 63 2c 61 72 67 | 76 2c 65 6e 76 29 0d 72 |argc,arg|v,env).r|
|00000c60| 65 67 69 73 74 65 72 20 | 69 6e 74 20 61 72 67 63 |egister |int argc|
|00000c70| 3b 0d 72 65 67 69 73 74 | 65 72 20 63 68 61 72 20 |;.regist|er char |
|00000c80| 2a 2a 61 72 67 76 3b 0d | 72 65 67 69 73 74 65 72 |**argv;.|register|
|00000c90| 20 63 68 61 72 20 2a 2a | 65 6e 76 3b 0d 7b 0d 20 | char **|env;.{. |
|00000ca0| 20 20 20 72 65 67 69 73 | 74 65 72 20 53 54 52 20 | regis|ter STR |
|00000cb0| 2a 73 74 72 3b 0d 20 20 | 20 20 72 65 67 69 73 74 |*str;. | regist|
|00000cc0| 65 72 20 63 68 61 72 20 | 2a 73 3b 0d 20 20 20 20 |er char |*s;. |
|00000cd0| 63 68 61 72 20 2a 73 63 | 72 69 70 74 6e 61 6d 65 |char *sc|riptname|
|00000ce0| 3b 0d 20 20 20 20 62 6f | 6f 6c 20 64 6f 73 65 61 |;. bo|ol dosea|
|00000cf0| 72 63 68 20 3d 20 46 41 | 4c 53 45 3b 0d 23 69 66 |rch = FA|LSE;.#if|
|00000d00| 64 65 66 20 44 4f 53 55 | 49 44 0d 20 20 20 20 63 |def DOSU|ID. c|
|00000d10| 68 61 72 20 2a 76 61 6c | 69 64 61 72 67 20 3d 20 |har *val|idarg = |
|00000d20| 22 22 3b 0d 23 65 6e 64 | 69 66 0d 0d 23 69 66 64 |"";.#end|if..#ifd|
|00000d30| 65 66 20 6d 61 63 69 6e | 74 6f 73 68 0d 23 69 66 |ef macin|tosh.#if|
|00000d40| 6e 64 65 66 20 4d 41 43 | 5f 53 54 41 4e 44 41 4c |ndef MAC|_STANDAL|
|00000d50| 4f 4e 45 0d 20 20 20 20 | 46 53 53 70 65 63 09 70 |ONE. |FSSpec.p|
|00000d60| 72 65 66 3b 0d 20 20 20 | 20 0d 20 20 20 20 49 6e |ref;. | . In|
|00000d70| 69 74 54 6f 6f 6c 62 6f | 78 28 29 3b 0d 23 69 66 |itToolbo|x();.#if|
|00000d80| 64 65 66 20 50 45 52 46 | 4f 52 4d 41 4e 43 45 0d |def PERF|ORMANCE.|
|00000d90| 20 20 20 20 49 6e 69 74 | 50 65 72 66 28 26 67 50 | Init|Perf(&gP|
|00000da0| 65 72 66 47 6c 6f 62 61 | 6c 73 2c 20 31 30 2c 20 |erfGloba|ls, 10, |
|00000db0| 38 2c 20 74 72 75 65 2c | 20 74 72 75 65 2c 20 22 |8, true,| true, "|
|00000dc0| 5c 70 43 4f 44 45 22 2c | 20 30 2c 20 22 5c 70 22 |\pCODE",| 0, "\p"|
|00000dd0| 2c 20 74 72 75 65 2c 20 | 30 2c 20 30 78 37 66 66 |, true, |0, 0x7ff|
|00000de0| 66 66 66 2c 20 33 32 29 | 3b 0d 20 20 20 20 50 65 |fff, 32)|;. Pe|
|00000df0| 72 66 43 6f 6e 74 72 6f | 6c 28 67 50 65 72 66 47 |rfContro|l(gPerfG|
|00000e00| 6c 6f 62 61 6c 73 2c 20 | 74 72 75 65 29 3b 0d 20 |lobals, |true);. |
|00000e10| 20 20 20 61 74 65 78 69 | 74 28 46 69 6e 61 6c 69 | atexi|t(Finali|
|00000e20| 7a 65 50 65 72 66 29 3b | 0d 23 65 6e 64 69 66 0d |zePerf);|.#endif.|
|00000e30| 20 20 20 20 0d 20 20 20 | 20 67 41 70 70 46 69 6c | . | gAppFil|
|00000e40| 65 20 09 3d 20 43 75 72 | 52 65 73 46 69 6c 65 28 |e .= Cur|ResFile(|
|00000e50| 29 3b 0d 20 20 20 20 0d | 20 20 20 20 69 66 20 28 |);. .| if (|
|00000e60| 50 61 74 68 32 46 53 53 | 70 65 63 28 67 65 74 65 |Path2FSS|pec(gete|
|00000e70| 6e 76 28 22 50 72 65 66 | 73 46 6f 6c 64 65 72 22 |nv("Pref|sFolder"|
|00000e80| 29 2c 20 26 70 72 65 66 | 29 29 0d 20 20 20 20 09 |), &pref|)). .|
|00000e90| 67 50 72 65 66 73 46 69 | 6c 65 20 3d 20 30 3b 0d |gPrefsFi|le = 0;.|
|00000ea0| 20 20 20 20 65 6c 73 65 | 20 69 66 20 28 46 53 70 | else| if (FSp|
|00000eb0| 44 6f 77 6e 28 26 70 72 | 65 66 2c 20 22 5c 70 50 |Down(&pr|ef, "\pP|
|00000ec0| 65 72 6c 20 50 72 65 66 | 65 72 65 6e 63 65 73 22 |erl Pref|erences"|
|00000ed0| 29 29 0d 20 20 20 20 09 | 67 50 72 65 66 73 46 69 |)). .|gPrefsFi|
|00000ee0| 6c 65 20 3d 20 30 3b 0d | 20 20 20 20 65 6c 73 65 |le = 0;.| else|
|00000ef0| 20 7b 0d 20 20 20 20 09 | 67 50 72 65 66 73 46 69 | {. .|gPrefsFi|
|00000f00| 6c 65 20 3d 20 48 4f 70 | 65 6e 52 65 73 46 69 6c |le = HOp|enResFil|
|00000f10| 65 28 70 72 65 66 2e 76 | 52 65 66 4e 75 6d 2c 20 |e(pref.v|RefNum, |
|00000f20| 70 72 65 66 2e 70 61 72 | 49 44 2c 20 70 72 65 66 |pref.par|ID, pref|
|00000f30| 2e 6e 61 6d 65 2c 20 66 | 73 52 64 50 65 72 6d 29 |.name, f|sRdPerm)|
|00000f40| 3b 0d 09 0d 09 69 66 20 | 28 67 50 72 65 66 73 46 |;....if |(gPrefsF|
|00000f50| 69 6c 65 20 3d 3d 20 2d | 31 29 0d 09 20 20 20 20 |ile == -|1).. |
|00000f60| 67 50 72 65 66 73 46 69 | 6c 65 20 3d 20 30 3b 0d |gPrefsFi|le = 0;.|
|00000f70| 20 20 20 20 7d 0d 23 65 | 6e 64 69 66 0d 20 20 20 | }.#e|ndif. |
|00000f80| 20 49 6e 69 74 43 75 72 | 73 6f 72 43 74 6c 28 4e | InitCur|sorCtl(N|
|00000f90| 55 4c 4c 29 3b 0d 0d 20 | 20 20 20 65 6e 76 20 3d |ULL);.. | env =|
|00000fa0| 20 69 6e 69 74 5f 65 6e | 76 28 65 6e 76 29 3b 0d | init_en|v(env);.|
|00000fb0| 23 65 6e 64 69 66 0d 0d | 23 69 66 64 65 66 20 53 |#endif..|#ifdef S|
|00000fc0| 45 54 55 49 44 5f 53 43 | 52 49 50 54 53 5f 41 52 |ETUID_SC|RIPTS_AR|
|00000fd0| 45 5f 53 45 43 55 52 45 | 5f 4e 4f 57 0d 23 69 66 |E_SECURE|_NOW.#if|
|00000fe0| 64 65 66 20 49 41 4d 53 | 55 49 44 0d 23 75 6e 64 |def IAMS|UID.#und|
|00000ff0| 65 66 20 49 41 4d 53 55 | 49 44 0d 20 20 20 20 66 |ef IAMSU|ID. f|
|00001000| 61 74 61 6c 28 22 73 75 | 69 64 70 65 72 6c 20 69 |atal("su|idperl i|
|00001010| 73 20 6e 6f 20 6c 6f 6e | 67 65 72 20 6e 65 65 64 |s no lon|ger need|
|00001020| 65 64 20 73 69 6e 63 65 | 20 74 68 65 20 6b 65 72 |ed since| the ker|
|00001030| 6e 65 6c 20 63 61 6e 20 | 6e 6f 77 20 65 78 65 63 |nel can |now exec|
|00001040| 75 74 65 5c 6e 5c 0d 73 | 65 74 75 69 64 20 70 65 |ute\n\.s|etuid pe|
|00001050| 72 6c 20 73 63 72 69 70 | 74 73 20 73 65 63 75 72 |rl scrip|ts secur|
|00001060| 65 6c 79 2e 5c 6e 22 29 | 3b 0d 23 65 6e 64 69 66 |ely.\n")|;.#endif|
|00001070| 0d 23 65 6e 64 69 66 0d | 0d 20 20 20 20 6f 72 69 |.#endif.|. ori|
|00001080| 67 61 72 67 76 20 3d 20 | 61 72 67 76 3b 0d 20 20 |gargv = |argv;. |
|00001090| 20 20 6f 72 69 67 61 72 | 67 63 20 3d 20 61 72 67 | origar|gc = arg|
|000010a0| 63 3b 0d 20 20 20 20 6f | 72 69 67 65 6e 76 69 72 |c;. o|rigenvir|
|000010b0| 6f 6e 20 3d 20 65 6e 76 | 69 72 6f 6e 3b 0d 20 20 |on = env|iron;. |
|000010c0| 20 20 75 69 64 20 3d 20 | 28 69 6e 74 29 67 65 74 | uid = |(int)get|
|000010d0| 75 69 64 28 29 3b 0d 20 | 20 20 20 65 75 69 64 20 |uid();. | euid |
|000010e0| 3d 20 28 69 6e 74 29 67 | 65 74 65 75 69 64 28 29 |= (int)g|eteuid()|
|000010f0| 3b 0d 20 20 20 20 67 69 | 64 20 3d 20 28 69 6e 74 |;. gi|d = (int|
|00001100| 29 67 65 74 67 69 64 28 | 29 3b 0d 20 20 20 20 65 |)getgid(|);. e|
|00001110| 67 69 64 20 3d 20 28 69 | 6e 74 29 67 65 74 65 67 |gid = (i|nt)geteg|
|00001120| 69 64 28 29 3b 0d 20 20 | 20 20 6d 69 6e 75 73 5f |id();. | minus_|
|00001130| 63 20 3d 20 30 3b 0d 20 | 20 20 20 73 70 72 69 6e |c = 0;. | sprin|
|00001140| 74 66 28 70 61 74 63 68 | 6c 65 76 65 6c 2c 22 25 |tf(patch|level,"%|
|00001150| 33 2e 33 73 25 32 2e 32 | 64 22 2c 20 69 6e 64 65 |3.3s%2.2|d", inde|
|00001160| 78 28 72 63 73 69 64 2c | 27 34 27 29 2c 20 50 41 |x(rcsid,|'4'), PA|
|00001170| 54 43 48 4c 45 56 45 4c | 29 3b 0d 23 69 66 64 65 |TCHLEVEL|);.#ifde|
|00001180| 66 20 4d 53 44 4f 53 0d | 20 20 20 20 2f 2a 0d 20 |f MSDOS.| /*. |
|00001190| 20 20 20 20 2a 20 54 68 | 65 72 65 20 69 73 20 6e | * Th|ere is n|
|000011a0| 6f 20 77 61 79 20 77 65 | 20 63 61 6e 20 72 65 66 |o way we| can ref|
|000011b0| 65 72 20 74 6f 20 74 68 | 65 6d 20 66 72 6f 6d 20 |er to th|em from |
|000011c0| 50 65 72 6c 20 73 6f 20 | 63 6c 6f 73 65 20 74 68 |Perl so |close th|
|000011d0| 65 6d 20 74 6f 20 73 61 | 76 65 0d 20 20 20 20 20 |em to sa|ve. |
|000011e0| 2a 20 73 70 61 63 65 2e | 20 20 54 68 65 20 6f 74 |* space.| The ot|
|000011f0| 68 65 72 20 61 6c 74 65 | 72 6e 61 74 69 76 65 20 |her alte|rnative |
|00001200| 77 6f 75 6c 64 20 62 65 | 20 74 6f 20 70 72 6f 76 |would be| to prov|
|00001210| 69 64 65 20 53 54 44 41 | 55 58 20 61 6e 64 20 53 |ide STDA|UX and S|
|00001220| 54 44 50 52 4e 0d 20 20 | 20 20 20 2a 20 66 69 6c |TDPRN. | * fil|
|00001230| 65 68 61 6e 64 6c 65 73 | 2e 0d 20 20 20 20 20 2a |ehandles|.. *|
|00001240| 2f 0d 20 20 20 20 28 76 | 6f 69 64 29 66 63 6c 6f |/. (v|oid)fclo|
|00001250| 73 65 28 73 74 64 61 75 | 78 29 3b 0d 20 20 20 20 |se(stdau|x);. |
|00001260| 28 76 6f 69 64 29 66 63 | 6c 6f 73 65 28 73 74 64 |(void)fc|lose(std|
|00001270| 70 72 6e 29 3b 0d 23 65 | 6e 64 69 66 0d 20 20 20 |prn);.#e|ndif. |
|00001280| 20 69 66 20 28 64 6f 5f | 75 6e 64 75 6d 70 29 20 | if (do_|undump) |
|00001290| 7b 0d 09 6f 72 69 67 66 | 69 6c 65 6e 61 6d 65 20 |{..origf|ilename |
|000012a0| 3d 20 73 61 76 65 73 74 | 72 28 61 72 67 76 5b 30 |= savest|r(argv[0|
|000012b0| 5d 29 3b 0d 09 64 6f 5f | 75 6e 64 75 6d 70 20 3d |]);..do_|undump =|
|000012c0| 20 30 3b 0d 09 6c 6f 6f | 70 5f 70 74 72 20 3d 20 | 0;..loo|p_ptr = |
|000012d0| 2d 31 3b 09 09 2f 2a 20 | 73 74 61 72 74 20 6c 61 |-1;../* |start la|
|000012e0| 62 65 6c 20 73 74 61 63 | 6b 20 61 67 61 69 6e 20 |bel stac|k again |
|000012f0| 2a 2f 0d 09 67 6f 74 6f | 20 6a 75 73 74 5f 64 6f |*/..goto| just_do|
|00001300| 69 74 3b 0d 20 20 20 20 | 7d 0d 23 69 66 64 65 66 |it;. |}.#ifdef|
|00001310| 20 54 41 49 4e 54 0d 23 | 69 66 6e 64 65 66 20 44 | TAINT.#|ifndef D|
|00001320| 4f 53 55 49 44 0d 20 20 | 20 20 69 66 20 28 75 69 |OSUID. | if (ui|
|00001330| 64 20 3d 3d 20 65 75 69 | 64 20 26 26 20 67 69 64 |d == eui|d && gid|
|00001340| 20 3d 3d 20 65 67 69 64 | 29 0d 09 74 61 69 6e 74 | == egid|)..taint|
|00001350| 61 6e 79 77 61 79 20 3d | 20 54 52 55 45 3b 09 09 |anyway =| TRUE;..|
|00001360| 2f 2a 20 72 75 6e 6e 69 | 6e 67 20 74 61 69 6e 74 |/* runni|ng taint|
|00001370| 70 65 72 6c 20 65 78 70 | 6c 69 63 69 74 6c 79 20 |perl exp|licitly |
|00001380| 2a 2f 0d 23 65 6e 64 69 | 66 0d 23 65 6e 64 69 66 |*/.#endi|f.#endif|
|00001390| 0d 20 20 20 20 28 76 6f | 69 64 29 73 70 72 69 6e |. (vo|id)sprin|
|000013a0| 74 66 28 69 6e 64 65 78 | 28 72 63 73 69 64 2c 27 |tf(index|(rcsid,'|
|000013b0| 23 27 29 2c 20 22 25 64 | 5c 6e 22 2c 20 50 41 54 |#'), "%d|\n", PAT|
|000013c0| 43 48 4c 45 56 45 4c 29 | 3b 0d 20 20 20 20 6c 69 |CHLEVEL)|;. li|
|000013d0| 6e 65 73 74 72 20 3d 20 | 53 74 72 5f 6e 65 77 28 |nestr = |Str_new(|
|000013e0| 36 35 2c 38 30 29 3b 0d | 20 20 20 20 73 74 72 5f |65,80);.| str_|
|000013f0| 6e 73 65 74 28 6c 69 6e | 65 73 74 72 2c 22 22 2c |nset(lin|estr,"",|
|00001400| 30 29 3b 0d 20 20 20 20 | 73 74 72 20 3d 20 73 74 |0);. |str = st|
|00001410| 72 5f 6d 61 6b 65 28 22 | 22 2c 30 29 3b 09 09 2f |r_make("|",0);../|
|00001420| 2a 20 66 69 72 73 74 20 | 75 73 65 64 20 66 6f 72 |* first |used for|
|00001430| 20 2d 49 20 66 6c 61 67 | 73 20 2a 2f 0d 20 20 20 | -I flag|s */. |
|00001440| 20 63 75 72 73 74 61 73 | 68 20 3d 20 64 65 66 73 | curstas|h = defs|
|00001450| 74 61 73 68 20 3d 20 68 | 6e 65 77 28 30 29 3b 0d |tash = h|new(0);.|
|00001460| 20 20 20 20 63 75 72 73 | 74 6e 61 6d 65 20 3d 20 | curs|tname = |
|00001470| 73 74 72 5f 6d 61 6b 65 | 28 22 6d 61 69 6e 22 2c |str_make|("main",|
|00001480| 34 29 3b 0d 20 20 20 20 | 73 74 61 62 5f 78 68 61 |4);. |stab_xha|
|00001490| 73 68 28 73 74 61 62 65 | 6e 74 28 22 5f 6d 61 69 |sh(stabe|nt("_mai|
|000014a0| 6e 22 2c 54 52 55 45 29 | 29 20 3d 20 64 65 66 73 |n",TRUE)|) = defs|
|000014b0| 74 61 73 68 3b 0d 20 20 | 20 20 64 65 66 73 74 61 |tash;. | defsta|
|000014c0| 73 68 2d 3e 74 62 6c 5f | 6e 61 6d 65 20 3d 20 22 |sh->tbl_|name = "|
|000014d0| 6d 61 69 6e 22 3b 0d 20 | 20 20 20 69 6e 63 73 74 |main";. | incst|
|000014e0| 61 62 20 3d 20 68 61 64 | 64 28 61 61 64 64 28 73 |ab = had|d(aadd(s|
|000014f0| 74 61 62 65 6e 74 28 22 | 49 4e 43 22 2c 54 52 55 |tabent("|INC",TRU|
|00001500| 45 29 29 29 3b 0d 20 20 | 20 20 69 6e 63 73 74 61 |E)));. | incsta|
|00001510| 62 2d 3e 73 74 72 5f 70 | 6f 6b 20 7c 3d 20 53 50 |b->str_p|ok |= SP|
|00001520| 5f 4d 55 4c 54 49 3b 0d | 20 20 20 20 66 6f 72 20 |_MULTI;.| for |
|00001530| 28 61 72 67 63 2d 2d 2c | 61 72 67 76 2b 2b 3b 20 |(argc--,|argv++; |
|00001540| 61 72 67 63 20 3e 20 30 | 3b 20 61 72 67 63 2d 2d |argc > 0|; argc--|
|00001550| 2c 61 72 67 76 2b 2b 29 | 20 7b 0d 09 69 66 20 28 |,argv++)| {..if (|
|00001560| 61 72 67 76 5b 30 5d 5b | 30 5d 20 21 3d 20 27 2d |argv[0][|0] != '-|
|00001570| 27 20 7c 7c 20 21 61 72 | 67 76 5b 30 5d 5b 31 5d |' || !ar|gv[0][1]|
|00001580| 29 0d 09 20 20 20 20 62 | 72 65 61 6b 3b 0d 23 69 |).. b|reak;.#i|
|00001590| 66 64 65 66 20 44 4f 53 | 55 49 44 0d 20 20 20 20 |fdef DOS|UID. |
|000015a0| 69 66 20 28 2a 76 61 6c | 69 64 61 72 67 29 0d 09 |if (*val|idarg)..|
|000015b0| 76 61 6c 69 64 61 72 67 | 20 3d 20 22 20 50 48 4f |validarg| = " PHO|
|000015c0| 4f 45 59 20 22 3b 0d 20 | 20 20 20 65 6c 73 65 0d |OEY ";. | else.|
|000015d0| 09 76 61 6c 69 64 61 72 | 67 20 3d 20 61 72 67 76 |.validar|g = argv|
|000015e0| 5b 30 5d 3b 0d 23 65 6e | 64 69 66 0d 09 73 20 3d |[0];.#en|dif..s =|
|000015f0| 20 61 72 67 76 5b 30 5d | 2b 31 3b 0d 20 20 20 20 | argv[0]|+1;. |
|00001600| 20 20 72 65 73 77 69 74 | 63 68 3a 0d 09 73 77 69 | reswit|ch:..swi|
|00001610| 74 63 68 20 28 2a 73 29 | 20 7b 0d 09 63 61 73 65 |tch (*s)| {..case|
|00001620| 20 27 30 27 3a 0d 09 63 | 61 73 65 20 27 61 27 3a | '0':..c|ase 'a':|
|00001630| 0d 09 63 61 73 65 20 27 | 63 27 3a 0d 09 63 61 73 |..case '|c':..cas|
|00001640| 65 20 27 64 27 3a 0d 09 | 63 61 73 65 20 27 44 27 |e 'd':..|case 'D'|
|00001650| 3a 0d 09 63 61 73 65 20 | 27 69 27 3a 0d 09 63 61 |:..case |'i':..ca|
|00001660| 73 65 20 27 6c 27 3a 0d | 09 63 61 73 65 20 27 6e |se 'l':.|.case 'n|
|00001670| 27 3a 0d 09 63 61 73 65 | 20 27 70 27 3a 0d 09 63 |':..case| 'p':..c|
|00001680| 61 73 65 20 27 75 27 3a | 0d 09 63 61 73 65 20 27 |ase 'u':|..case '|
|00001690| 55 27 3a 0d 09 63 61 73 | 65 20 27 76 27 3a 0d 09 |U':..cas|e 'v':..|
|000016a0| 63 61 73 65 20 27 77 27 | 3a 0d 09 20 20 20 20 69 |case 'w'|:.. i|
|000016b0| 66 20 28 73 20 3d 20 6d | 6f 72 65 73 77 69 74 63 |f (s = m|oreswitc|
|000016c0| 68 65 73 28 73 29 29 0d | 09 09 67 6f 74 6f 20 72 |hes(s)).|..goto r|
|000016d0| 65 73 77 69 74 63 68 3b | 0d 09 20 20 20 20 62 72 |eswitch;|.. br|
|000016e0| 65 61 6b 3b 0d 0d 09 63 | 61 73 65 20 27 65 27 3a |eak;...c|ase 'e':|
|000016f0| 0d 23 69 66 64 65 66 20 | 54 41 49 4e 54 0d 09 20 |.#ifdef |TAINT.. |
|00001700| 20 20 20 69 66 20 28 65 | 75 69 64 20 21 3d 20 75 | if (e|uid != u|
|00001710| 69 64 20 7c 7c 20 65 67 | 69 64 20 21 3d 20 67 69 |id || eg|id != gi|
|00001720| 64 29 0d 09 09 66 61 74 | 61 6c 28 22 4e 6f 20 2d |d)...fat|al("No -|
|00001730| 65 20 61 6c 6c 6f 77 65 | 64 20 69 6e 20 73 65 74 |e allowe|d in set|
|00001740| 75 69 64 20 73 63 72 69 | 70 74 73 22 29 3b 0d 23 |uid scri|pts");.#|
|00001750| 65 6e 64 69 66 0d 09 20 | 20 20 20 69 66 20 28 21 |endif.. | if (!|
|00001760| 65 5f 66 70 29 20 7b 0d | 09 20 20 20 20 20 20 20 |e_fp) {.|. |
|00001770| 20 65 5f 74 6d 70 6e 61 | 6d 65 20 3d 20 73 61 76 | e_tmpna|me = sav|
|00001780| 65 73 74 72 28 54 4d 50 | 50 41 54 48 29 3b 0d 09 |estr(TMP|PATH);..|
|00001790| 09 28 76 6f 69 64 29 6d | 6b 74 65 6d 70 28 65 5f |.(void)m|ktemp(e_|
|000017a0| 74 6d 70 6e 61 6d 65 29 | 3b 0d 09 09 69 66 20 28 |tmpname)|;...if (|
|000017b0| 21 2a 65 5f 74 6d 70 6e | 61 6d 65 29 0d 09 09 20 |!*e_tmpn|ame)... |
|000017c0| 20 20 20 66 61 74 61 6c | 28 22 43 61 6e 27 74 20 | fatal|("Can't |
|000017d0| 6d 6b 74 65 6d 70 28 29 | 22 29 3b 0d 09 09 65 5f |mktemp()|");...e_|
|000017e0| 66 70 20 3d 20 66 6f 70 | 65 6e 28 65 5f 74 6d 70 |fp = fop|en(e_tmp|
|000017f0| 6e 61 6d 65 2c 22 77 22 | 29 3b 0d 09 09 69 66 20 |name,"w"|);...if |
|00001800| 28 21 65 5f 66 70 29 0d | 09 09 20 20 20 20 66 61 |(!e_fp).|.. fa|
|00001810| 74 61 6c 28 22 43 61 6e | 6e 6f 74 20 6f 70 65 6e |tal("Can|not open|
|00001820| 20 74 65 6d 70 6f 72 61 | 72 79 20 66 69 6c 65 22 | tempora|ry file"|
|00001830| 29 3b 0d 09 20 20 20 20 | 7d 0d 09 20 20 20 20 69 |);.. |}.. i|
|00001840| 66 20 28 61 72 67 76 5b | 31 5d 29 20 7b 0d 09 09 |f (argv[|1]) {...|
|00001850| 66 70 75 74 73 28 61 72 | 67 76 5b 31 5d 2c 65 5f |fputs(ar|gv[1],e_|
|00001860| 66 70 29 3b 0d 09 09 61 | 72 67 63 2d 2d 2c 61 72 |fp);...a|rgc--,ar|
|00001870| 67 76 2b 2b 3b 0d 09 20 | 20 20 20 7d 0d 09 20 20 |gv++;.. | }.. |
|00001880| 20 20 28 76 6f 69 64 29 | 70 75 74 63 28 27 5c 6e | (void)|putc('\n|
|00001890| 27 2c 20 65 5f 66 70 29 | 3b 0d 09 20 20 20 20 62 |', e_fp)|;.. b|
|000018a0| 72 65 61 6b 3b 0d 09 63 | 61 73 65 20 27 49 27 3a |reak;..c|ase 'I':|
|000018b0| 0d 23 69 66 64 65 66 20 | 54 41 49 4e 54 0d 09 20 |.#ifdef |TAINT.. |
|000018c0| 20 20 20 69 66 20 28 65 | 75 69 64 20 21 3d 20 75 | if (e|uid != u|
|000018d0| 69 64 20 7c 7c 20 65 67 | 69 64 20 21 3d 20 67 69 |id || eg|id != gi|
|000018e0| 64 29 0d 09 09 66 61 74 | 61 6c 28 22 4e 6f 20 2d |d)...fat|al("No -|
|000018f0| 49 20 61 6c 6c 6f 77 65 | 64 20 69 6e 20 73 65 74 |I allowe|d in set|
|00001900| 75 69 64 20 73 63 72 69 | 70 74 73 22 29 3b 0d 23 |uid scri|pts");.#|
|00001910| 65 6e 64 69 66 0d 09 20 | 20 20 20 73 74 72 5f 63 |endif.. | str_c|
|00001920| 61 74 28 73 74 72 2c 22 | 2d 22 29 3b 0d 09 20 20 |at(str,"|-");.. |
|00001930| 20 20 73 74 72 5f 63 61 | 74 28 73 74 72 2c 73 29 | str_ca|t(str,s)|
|00001940| 3b 0d 09 20 20 20 20 73 | 74 72 5f 63 61 74 28 73 |;.. s|tr_cat(s|
|00001950| 74 72 2c 22 20 22 29 3b | 0d 09 20 20 20 20 69 66 |tr," ");|.. if|
|00001960| 20 28 2a 2b 2b 73 29 20 | 7b 0d 09 09 28 76 6f 69 | (*++s) |{...(voi|
|00001970| 64 29 61 70 75 73 68 28 | 73 74 61 62 5f 61 72 72 |d)apush(|stab_arr|
|00001980| 61 79 28 69 6e 63 73 74 | 61 62 29 2c 73 74 72 5f |ay(incst|ab),str_|
|00001990| 6d 61 6b 65 28 73 2c 30 | 29 29 3b 0d 09 20 20 20 |make(s,0|));.. |
|000019a0| 20 7d 0d 09 20 20 20 20 | 65 6c 73 65 20 69 66 20 | }.. |else if |
|000019b0| 28 61 72 67 76 5b 31 5d | 29 20 7b 0d 09 09 28 76 |(argv[1]|) {...(v|
|000019c0| 6f 69 64 29 61 70 75 73 | 68 28 73 74 61 62 5f 61 |oid)apus|h(stab_a|
|000019d0| 72 72 61 79 28 69 6e 63 | 73 74 61 62 29 2c 73 74 |rray(inc|stab),st|
|000019e0| 72 5f 6d 61 6b 65 28 61 | 72 67 76 5b 31 5d 2c 30 |r_make(a|rgv[1],0|
|000019f0| 29 29 3b 0d 09 09 73 74 | 72 5f 63 61 74 28 73 74 |));...st|r_cat(st|
|00001a00| 72 2c 61 72 67 76 5b 31 | 5d 29 3b 0d 09 09 61 72 |r,argv[1|]);...ar|
|00001a10| 67 63 2d 2d 2c 61 72 67 | 76 2b 2b 3b 0d 09 09 73 |gc--,arg|v++;...s|
|00001a20| 74 72 5f 63 61 74 28 73 | 74 72 2c 22 20 22 29 3b |tr_cat(s|tr," ");|
|00001a30| 0d 09 20 20 20 20 7d 0d | 09 20 20 20 20 62 72 65 |.. }.|. bre|
|00001a40| 61 6b 3b 0d 09 63 61 73 | 65 20 27 50 27 3a 0d 23 |ak;..cas|e 'P':.#|
|00001a50| 69 66 64 65 66 20 54 41 | 49 4e 54 0d 09 20 20 20 |ifdef TA|INT.. |
|00001a60| 20 69 66 20 28 65 75 69 | 64 20 21 3d 20 75 69 64 | if (eui|d != uid|
|00001a70| 20 7c 7c 20 65 67 69 64 | 20 21 3d 20 67 69 64 29 | || egid| != gid)|
|00001a80| 0d 09 09 66 61 74 61 6c | 28 22 4e 6f 20 2d 50 20 |...fatal|("No -P |
|00001a90| 61 6c 6c 6f 77 65 64 20 | 69 6e 20 73 65 74 75 69 |allowed |in setui|
|00001aa0| 64 20 73 63 72 69 70 74 | 73 22 29 3b 0d 23 65 6e |d script|s");.#en|
|00001ab0| 64 69 66 0d 09 20 20 20 | 20 70 72 65 70 72 6f 63 |dif.. | preproc|
|00001ac0| 65 73 73 20 3d 20 54 52 | 55 45 3b 0d 09 20 20 20 |ess = TR|UE;.. |
|00001ad0| 20 73 2b 2b 3b 0d 09 20 | 20 20 20 67 6f 74 6f 20 | s++;.. | goto |
|00001ae0| 72 65 73 77 69 74 63 68 | 3b 0d 09 63 61 73 65 20 |reswitch|;..case |
|00001af0| 27 73 27 3a 0d 23 69 66 | 64 65 66 20 54 41 49 4e |'s':.#if|def TAIN|
|00001b00| 54 0d 09 20 20 20 20 69 | 66 20 28 65 75 69 64 20 |T.. i|f (euid |
|00001b10| 21 3d 20 75 69 64 20 7c | 7c 20 65 67 69 64 20 21 |!= uid ||| egid !|
|00001b20| 3d 20 67 69 64 29 0d 09 | 09 66 61 74 61 6c 28 22 |= gid)..|.fatal("|
|00001b30| 4e 6f 20 2d 73 20 61 6c | 6c 6f 77 65 64 20 69 6e |No -s al|lowed in|
|00001b40| 20 73 65 74 75 69 64 20 | 73 63 72 69 70 74 73 22 | setuid |scripts"|
|00001b50| 29 3b 0d 23 65 6e 64 69 | 66 0d 09 20 20 20 20 64 |);.#endi|f.. d|
|00001b60| 6f 73 77 69 74 63 68 65 | 73 20 3d 20 54 52 55 45 |oswitche|s = TRUE|
|00001b70| 3b 0d 09 20 20 20 20 73 | 2b 2b 3b 0d 09 20 20 20 |;.. s|++;.. |
|00001b80| 20 67 6f 74 6f 20 72 65 | 73 77 69 74 63 68 3b 0d | goto re|switch;.|
|00001b90| 09 63 61 73 65 20 27 53 | 27 3a 0d 23 69 66 64 65 |.case 'S|':.#ifde|
|00001ba0| 66 20 54 41 49 4e 54 0d | 09 20 20 20 20 69 66 20 |f TAINT.|. if |
|00001bb0| 28 65 75 69 64 20 21 3d | 20 75 69 64 20 7c 7c 20 |(euid !=| uid || |
|00001bc0| 65 67 69 64 20 21 3d 20 | 67 69 64 29 0d 09 09 66 |egid != |gid)...f|
|00001bd0| 61 74 61 6c 28 22 4e 6f | 20 2d 53 20 61 6c 6c 6f |atal("No| -S allo|
|00001be0| 77 65 64 20 69 6e 20 73 | 65 74 75 69 64 20 73 63 |wed in s|etuid sc|
|00001bf0| 72 69 70 74 73 22 29 3b | 0d 23 65 6e 64 69 66 0d |ripts");|.#endif.|
|00001c00| 09 20 20 20 20 64 6f 73 | 65 61 72 63 68 20 3d 20 |. dos|earch = |
|00001c10| 54 52 55 45 3b 0d 09 20 | 20 20 20 73 2b 2b 3b 0d |TRUE;.. | s++;.|
|00001c20| 09 20 20 20 20 67 6f 74 | 6f 20 72 65 73 77 69 74 |. got|o reswit|
|00001c30| 63 68 3b 0d 09 63 61 73 | 65 20 27 78 27 3a 0d 09 |ch;..cas|e 'x':..|
|00001c40| 20 20 20 20 64 6f 65 78 | 74 72 61 63 74 20 3d 20 | doex|tract = |
|00001c50| 54 52 55 45 3b 0d 09 20 | 20 20 20 73 2b 2b 3b 0d |TRUE;.. | s++;.|
|00001c60| 09 20 20 20 20 69 66 20 | 28 2a 73 29 0d 09 09 63 |. if |(*s)...c|
|00001c70| 64 64 69 72 20 3d 20 73 | 61 76 65 73 74 72 28 73 |ddir = s|avestr(s|
|00001c80| 29 3b 0d 09 20 20 20 20 | 62 72 65 61 6b 3b 0d 09 |);.. |break;..|
|00001c90| 63 61 73 65 20 27 2d 27 | 3a 0d 09 20 20 20 20 61 |case '-'|:.. a|
|00001ca0| 72 67 63 2d 2d 2c 61 72 | 67 76 2b 2b 3b 0d 09 20 |rgc--,ar|gv++;.. |
|00001cb0| 20 20 20 67 6f 74 6f 20 | 73 77 69 74 63 68 5f 65 | goto |switch_e|
|00001cc0| 6e 64 3b 0d 09 63 61 73 | 65 20 30 3a 0d 09 20 20 |nd;..cas|e 0:.. |
|00001cd0| 20 20 62 72 65 61 6b 3b | 0d 09 64 65 66 61 75 6c | break;|..defaul|
|00001ce0| 74 3a 0d 09 20 20 20 20 | 66 61 74 61 6c 28 22 55 |t:.. |fatal("U|
|00001cf0| 6e 72 65 63 6f 67 6e 69 | 7a 65 64 20 73 77 69 74 |nrecogni|zed swit|
|00001d00| 63 68 3a 20 2d 25 73 22 | 2c 73 29 3b 0d 09 7d 0d |ch: -%s"|,s);..}.|
|00001d10| 20 20 20 20 7d 0d 20 20 | 73 77 69 74 63 68 5f 65 | }. |switch_e|
|00001d20| 6e 64 3a 0d 20 20 20 20 | 73 63 72 69 70 74 6e 61 |nd:. |scriptna|
|00001d30| 6d 65 20 3d 20 61 72 67 | 76 5b 30 5d 3b 0d 20 20 |me = arg|v[0];. |
|00001d40| 20 20 69 66 20 28 65 5f | 66 70 29 20 7b 0d 09 69 | if (e_|fp) {..i|
|00001d50| 66 20 28 66 66 6c 75 73 | 68 28 65 5f 66 70 29 20 |f (fflus|h(e_fp) |
|00001d60| 7c 7c 20 66 65 72 72 6f | 72 28 65 5f 66 70 29 20 ||| ferro|r(e_fp) |
|00001d70| 7c 7c 20 66 63 6c 6f 73 | 65 28 65 5f 66 70 29 29 ||| fclos|e(e_fp))|
|00001d80| 0d 09 20 20 20 20 66 61 | 74 61 6c 28 22 43 61 6e |.. fa|tal("Can|
|00001d90| 27 74 20 77 72 69 74 65 | 20 74 6f 20 74 65 6d 70 |'t write| to temp|
|00001da0| 20 66 69 6c 65 20 66 6f | 72 20 2d 65 3a 20 25 73 | file fo|r -e: %s|
|00001db0| 22 2c 20 73 74 72 65 72 | 72 6f 72 28 65 72 72 6e |", strer|ror(errn|
|00001dc0| 6f 29 29 3b 0d 09 61 72 | 67 63 2b 2b 2c 61 72 67 |o));..ar|gc++,arg|
|00001dd0| 76 2d 2d 3b 0d 09 73 63 | 72 69 70 74 6e 61 6d 65 |v--;..sc|riptname|
|00001de0| 20 3d 20 65 5f 74 6d 70 | 6e 61 6d 65 3b 0d 20 20 | = e_tmp|name;. |
|00001df0| 20 20 7d 0d 0d 23 69 66 | 64 65 66 20 44 4f 53 49 | }..#if|def DOSI|
|00001e00| 53 48 0d 23 64 65 66 69 | 6e 65 20 50 45 52 4c 4c |SH.#defi|ne PERLL|
|00001e10| 49 42 5f 53 45 50 20 27 | 3b 27 0d 23 65 6c 73 65 |IB_SEP '|;'.#else|
|00001e20| 0d 23 69 66 64 65 66 20 | 6d 61 63 69 6e 74 6f 73 |.#ifdef |macintos|
|00001e30| 68 0d 23 64 65 66 69 6e | 65 20 50 45 52 4c 4c 49 |h.#defin|e PERLLI|
|00001e40| 42 5f 53 45 50 20 27 2c | 27 0d 23 65 6c 73 65 0d |B_SEP ',|'.#else.|
|00001e50| 23 64 65 66 69 6e 65 20 | 50 45 52 4c 4c 49 42 5f |#define |PERLLIB_|
|00001e60| 53 45 50 20 27 3a 27 0d | 23 65 6e 64 69 66 0d 23 |SEP ':'.|#endif.#|
|00001e70| 65 6e 64 69 66 0d 23 69 | 66 6e 64 65 66 20 54 41 |endif.#i|fndef TA|
|00001e80| 49 4e 54 09 09 2f 2a 20 | 43 61 6e 27 74 20 61 6c |INT../* |Can't al|
|00001e90| 6c 6f 77 20 61 72 62 69 | 74 72 61 72 79 20 50 45 |low arbi|trary PE|
|00001ea0| 52 4c 4c 49 42 20 69 6e | 20 73 65 74 75 69 64 20 |RLLIB in| setuid |
|00001eb0| 73 63 72 69 70 74 20 2a | 2f 0d 23 69 66 64 65 66 |script *|/.#ifdef|
|00001ec0| 20 4d 41 43 50 45 52 4c | 5f 53 54 41 4e 44 41 4c | MACPERL|_STANDAL|
|00001ed0| 4f 4e 45 0d 20 20 20 20 | 28 76 6f 69 64 29 61 70 |ONE. |(void)ap|
|00001ee0| 75 73 68 28 73 74 61 62 | 5f 61 72 72 61 79 28 69 |ush(stab|_array(i|
|00001ef0| 6e 63 73 74 61 62 29 2c | 73 74 72 5f 6d 61 6b 65 |ncstab),|str_make|
|00001f00| 28 22 44 65 76 3a 50 73 | 65 75 64 6f 3a 22 2c 31 |("Dev:Ps|eudo:",1|
|00001f10| 31 29 29 3b 0d 23 65 6e | 64 69 66 0d 20 20 20 20 |1));.#en|dif. |
|00001f20| 69 6e 63 70 75 73 68 28 | 67 65 74 65 6e 76 28 22 |incpush(|getenv("|
|00001f30| 50 45 52 4c 4c 49 42 22 | 29 29 3b 0d 23 65 6e 64 |PERLLIB"|));.#end|
|00001f40| 69 66 20 2f 2a 20 54 41 | 49 4e 54 20 2a 2f 0d 0d |if /* TA|INT */..|
|00001f50| 23 69 66 64 65 66 20 6d | 61 63 69 6e 74 6f 73 68 |#ifdef m|acintosh|
|00001f60| 0d 23 69 66 64 65 66 20 | 50 52 49 56 4c 49 42 0d |.#ifdef |PRIVLIB.|
|00001f70| 20 20 20 20 69 6e 63 70 | 75 73 68 28 50 52 49 56 | incp|ush(PRIV|
|00001f80| 4c 49 42 29 3b 0d 23 65 | 6e 64 69 66 0d 20 20 20 |LIB);.#e|ndif. |
|00001f90| 20 28 76 6f 69 64 29 61 | 70 75 73 68 28 73 74 61 | (void)a|push(sta|
|00001fa0| 62 5f 61 72 72 61 79 28 | 69 6e 63 73 74 61 62 29 |b_array(|incstab)|
|00001fb0| 2c 73 74 72 5f 6d 61 6b | 65 28 22 3a 22 2c 31 29 |,str_mak|e(":",1)|
|00001fc0| 29 3b 0d 23 65 6c 73 65 | 0d 23 69 66 6e 64 65 66 |);.#else|.#ifndef|
|00001fd0| 20 50 52 49 56 4c 49 42 | 0d 23 64 65 66 69 6e 65 | PRIVLIB|.#define|
|00001fe0| 20 50 52 49 56 4c 49 42 | 20 22 2f 75 73 72 2f 6c | PRIVLIB| "/usr/l|
|00001ff0| 6f 63 61 6c 2f 6c 69 62 | 2f 70 65 72 6c 22 0d 23 |ocal/lib|/perl".#|
|00002000| 65 6e 64 69 66 0d 20 20 | 20 20 69 6e 63 70 75 73 |endif. | incpus|
|00002010| 68 28 50 52 49 56 4c 49 | 42 29 3b 0d 20 20 20 20 |h(PRIVLI|B);. |
|00002020| 28 76 6f 69 64 29 61 70 | 75 73 68 28 73 74 61 62 |(void)ap|ush(stab|
|00002030| 5f 61 72 72 61 79 28 69 | 6e 63 73 74 61 62 29 2c |_array(i|ncstab),|
|00002040| 73 74 72 5f 6d 61 6b 65 | 28 22 2e 22 2c 31 29 29 |str_make|(".",1))|
|00002050| 3b 0d 23 65 6e 64 69 66 | 0d 0d 20 20 20 20 73 74 |;.#endif|.. st|
|00002060| 72 5f 73 65 74 28 26 73 | 74 72 5f 6e 6f 2c 4e 6f |r_set(&s|tr_no,No|
|00002070| 29 3b 0d 20 20 20 20 73 | 74 72 5f 73 65 74 28 26 |);. s|tr_set(&|
|00002080| 73 74 72 5f 79 65 73 2c | 59 65 73 29 3b 0d 0d 20 |str_yes,|Yes);.. |
|00002090| 20 20 20 2f 2a 20 6f 70 | 65 6e 20 73 63 72 69 70 | /* op|en scrip|
|000020a0| 74 20 2a 2f 0d 0d 20 20 | 20 20 69 66 20 28 73 63 |t */.. | if (sc|
|000020b0| 72 69 70 74 6e 61 6d 65 | 20 3d 3d 20 4e 75 6c 6c |riptname| == Null|
|000020c0| 63 68 29 0d 23 69 66 64 | 65 66 20 4d 53 44 4f 53 |ch).#ifd|ef MSDOS|
|000020d0| 0d 20 20 20 20 7b 0d 09 | 69 66 20 28 20 69 73 61 |. {..|if ( isa|
|000020e0| 74 74 79 28 66 69 6c 65 | 6e 6f 28 73 74 64 69 6e |tty(file|no(stdin|
|000020f0| 29 29 20 29 0d 09 20 20 | 6d 6f 72 65 73 77 69 74 |)) ).. |moreswit|
|00002100| 63 68 65 73 28 22 76 22 | 29 3b 0d 09 73 63 72 69 |ches("v"|);..scri|
|00002110| 70 74 6e 61 6d 65 20 3d | 20 22 2d 22 3b 0d 20 20 |ptname =| "-";. |
|00002120| 20 20 7d 0d 23 65 6c 73 | 65 0d 23 69 66 64 65 66 | }.#els|e.#ifdef|
|00002130| 20 6d 61 63 69 6e 74 6f | 73 68 0d 09 73 63 72 69 | macinto|sh..scri|
|00002140| 70 74 6e 61 6d 65 20 3d | 20 22 44 65 76 3a 53 74 |ptname =| "Dev:St|
|00002150| 64 69 6e 22 3b 0d 23 65 | 6c 73 65 0d 09 73 63 72 |din";.#e|lse..scr|
|00002160| 69 70 74 6e 61 6d 65 20 | 3d 20 22 2d 22 3b 0d 23 |iptname |= "-";.#|
|00002170| 65 6e 64 69 66 0d 23 65 | 6e 64 69 66 0d 23 69 66 |endif.#e|ndif.#if|
|00002180| 64 65 66 20 6d 61 63 69 | 6e 74 6f 73 68 0d 20 20 |def maci|ntosh. |
|00002190| 20 20 69 66 20 28 64 6f | 73 65 61 72 63 68 20 26 | if (do|search &|
|000021a0| 26 20 21 69 6e 64 65 78 | 28 73 63 72 69 70 74 6e |& !index|(scriptn|
|000021b0| 61 6d 65 2c 20 27 3a 27 | 29 20 26 26 20 28 73 20 |ame, ':'|) && (s |
|000021c0| 3d 20 67 65 74 65 6e 76 | 28 22 43 6f 6d 6d 61 6e |= getenv|("Comman|
|000021d0| 64 73 22 29 29 29 20 7b | 0d 23 65 6c 73 65 0d 20 |ds"))) {|.#else. |
|000021e0| 20 20 20 69 66 20 28 64 | 6f 73 65 61 72 63 68 20 | if (d|osearch |
|000021f0| 26 26 20 21 69 6e 64 65 | 78 28 73 63 72 69 70 74 |&& !inde|x(script|
|00002200| 6e 61 6d 65 2c 20 27 2f | 27 29 20 26 26 20 28 73 |name, '/|') && (s|
|00002210| 20 3d 20 67 65 74 65 6e | 76 28 22 50 41 54 48 22 | = geten|v("PATH"|
|00002220| 29 29 29 20 7b 0d 23 65 | 6e 64 69 66 0d 09 63 68 |))) {.#e|ndif..ch|
|00002230| 61 72 20 2a 78 66 6f 75 | 6e 64 20 3d 20 4e 75 6c |ar *xfou|nd = Nul|
|00002240| 6c 63 68 2c 20 2a 78 66 | 61 69 6c 65 64 20 3d 20 |lch, *xf|ailed = |
|00002250| 4e 75 6c 6c 63 68 3b 0d | 09 69 6e 74 20 6c 65 6e |Nullch;.|.int len|
|00002260| 3b 0d 0d 09 62 75 66 65 | 6e 64 20 3d 20 73 20 2b |;...bufe|nd = s +|
|00002270| 20 73 74 72 6c 65 6e 28 | 73 29 3b 0d 09 77 68 69 | strlen(|s);..whi|
|00002280| 6c 65 20 28 2a 73 29 20 | 7b 0d 23 69 66 6e 64 65 |le (*s) |{.#ifnde|
|00002290| 66 20 44 4f 53 49 53 48 | 0d 23 69 66 6e 64 65 66 |f DOSISH|.#ifndef|
|000022a0| 20 6d 61 63 69 6e 74 6f | 73 68 0d 09 20 20 20 20 | macinto|sh.. |
|000022b0| 73 20 3d 20 63 70 79 74 | 69 6c 6c 28 74 6f 6b 65 |s = cpyt|ill(toke|
|000022c0| 6e 62 75 66 2c 73 2c 62 | 75 66 65 6e 64 2c 27 3a |nbuf,s,b|ufend,':|
|000022d0| 27 2c 26 6c 65 6e 29 3b | 0d 23 65 6c 73 65 0d 09 |',&len);|.#else..|
|000022e0| 20 20 20 20 66 6f 72 20 | 28 6c 65 6e 20 3d 20 30 | for |(len = 0|
|000022f0| 3b 20 2a 73 20 26 26 20 | 2a 73 20 21 3d 20 27 2c |; *s && |*s != ',|
|00002300| 27 3b 20 74 6f 6b 65 6e | 62 75 66 5b 6c 65 6e 2b |'; token|buf[len+|
|00002310| 2b 5d 20 3d 20 2a 73 2b | 2b 29 3b 0d 09 20 20 20 |+] = *s+|+);.. |
|00002320| 20 74 6f 6b 65 6e 62 75 | 66 5b 6c 65 6e 5d 20 3d | tokenbu|f[len] =|
|00002330| 20 27 5c 30 27 3b 0d 23 | 65 6e 64 69 66 0d 23 65 | '\0';.#|endif.#e|
|00002340| 6c 73 65 0d 23 69 66 64 | 65 66 20 61 74 61 72 69 |lse.#ifd|ef atari|
|00002350| 73 74 0d 09 20 20 20 20 | 66 6f 72 20 28 6c 65 6e |st.. |for (len|
|00002360| 20 3d 20 30 3b 20 2a 73 | 20 26 26 20 2a 73 20 21 | = 0; *s| && *s !|
|00002370| 3d 20 27 2c 27 20 26 26 | 20 2a 73 20 21 3d 20 27 |= ',' &&| *s != '|
|00002380| 3b 27 3b 20 74 6f 6b 65 | 6e 62 75 66 5b 6c 65 6e |;'; toke|nbuf[len|
|00002390| 2b 2b 5d 20 3d 20 2a 73 | 2b 2b 29 3b 0d 09 20 20 |++] = *s|++);.. |
|000023a0| 20 20 74 6f 6b 65 6e 62 | 75 66 5b 6c 65 6e 5d 20 | tokenb|uf[len] |
|000023b0| 3d 20 27 5c 30 27 3b 0d | 23 65 6c 73 65 0d 09 20 |= '\0';.|#else.. |
|000023c0| 20 20 20 66 6f 72 20 28 | 6c 65 6e 20 3d 20 30 3b | for (|len = 0;|
|000023d0| 20 2a 73 20 26 26 20 2a | 73 20 21 3d 20 27 3b 27 | *s && *|s != ';'|
|000023e0| 3b 20 74 6f 6b 65 6e 62 | 75 66 5b 6c 65 6e 2b 2b |; tokenb|uf[len++|
|000023f0| 5d 20 3d 20 2a 73 2b 2b | 29 3b 0d 09 20 20 20 20 |] = *s++|);.. |
|00002400| 74 6f 6b 65 6e 62 75 66 | 5b 6c 65 6e 5d 20 3d 20 |tokenbuf|[len] = |
|00002410| 27 5c 30 27 3b 0d 23 65 | 6e 64 69 66 0d 23 65 6e |'\0';.#e|ndif.#en|
|00002420| 64 69 66 0d 09 20 20 20 | 20 69 66 20 28 2a 73 29 |dif.. | if (*s)|
|00002430| 0d 09 09 73 2b 2b 3b 0d | 23 69 66 6e 64 65 66 20 |...s++;.|#ifndef |
|00002440| 44 4f 53 49 53 48 0d 23 | 69 66 64 65 66 20 6d 61 |DOSISH.#|ifdef ma|
|00002450| 63 69 6e 74 6f 73 68 0d | 09 20 20 20 20 69 66 20 |cintosh.|. if |
|00002460| 28 6c 65 6e 20 26 26 20 | 74 6f 6b 65 6e 62 75 66 |(len && |tokenbuf|
|00002470| 5b 6c 65 6e 2d 31 5d 20 | 21 3d 20 27 3a 27 29 0d |[len-1] |!= ':').|
|00002480| 09 09 28 76 6f 69 64 29 | 73 74 72 63 61 74 28 74 |..(void)|strcat(t|
|00002490| 6f 6b 65 6e 62 75 66 2b | 6c 65 6e 2c 22 3a 22 29 |okenbuf+|len,":")|
|000024a0| 3b 0d 23 65 6c 73 65 0d | 09 20 20 20 20 69 66 20 |;.#else.|. if |
|000024b0| 28 6c 65 6e 20 26 26 20 | 74 6f 6b 65 6e 62 75 66 |(len && |tokenbuf|
|000024c0| 5b 6c 65 6e 2d 31 5d 20 | 21 3d 20 27 2f 27 29 0d |[len-1] |!= '/').|
|000024d0| 09 09 28 76 6f 69 64 29 | 73 74 72 63 61 74 28 74 |..(void)|strcat(t|
|000024e0| 6f 6b 65 6e 62 75 66 2b | 6c 65 6e 2c 22 2f 22 29 |okenbuf+|len,"/")|
|000024f0| 3b 0d 23 65 6e 64 69 66 | 0d 23 65 6c 73 65 0d 23 |;.#endif|.#else.#|
|00002500| 69 66 64 65 66 20 61 74 | 61 72 69 73 74 0d 09 20 |ifdef at|arist.. |
|00002510| 20 20 20 69 66 20 28 6c | 65 6e 20 26 26 20 28 28 | if (l|en && ((|
|00002520| 74 6f 6b 65 6e 62 75 66 | 5b 6c 65 6e 2d 31 5d 20 |tokenbuf|[len-1] |
|00002530| 21 3d 20 27 5c 5c 27 29 | 20 26 26 20 28 74 6f 6b |!= '\\')| && (tok|
|00002540| 65 6e 62 75 66 5b 6c 65 | 6e 2d 31 5d 20 21 3d 20 |enbuf[le|n-1] != |
|00002550| 27 2f 27 29 29 29 0d 09 | 09 28 76 6f 69 64 29 73 |'/')))..|.(void)s|
|00002560| 74 72 63 61 74 28 74 6f | 6b 65 6e 62 75 66 2b 6c |trcat(to|kenbuf+l|
|00002570| 65 6e 2c 22 2f 22 29 3b | 0d 23 65 6c 73 65 0d 09 |en,"/");|.#else..|
|00002580| 20 20 20 20 69 66 20 28 | 6c 65 6e 20 26 26 20 74 | if (|len && t|
|00002590| 6f 6b 65 6e 62 75 66 5b | 6c 65 6e 2d 31 5d 20 21 |okenbuf[|len-1] !|
|000025a0| 3d 20 27 5c 5c 27 29 0d | 09 09 28 76 6f 69 64 29 |= '\\').|..(void)|
|000025b0| 73 74 72 63 61 74 28 74 | 6f 6b 65 6e 62 75 66 2b |strcat(t|okenbuf+|
|000025c0| 6c 65 6e 2c 22 5c 5c 22 | 29 3b 0d 23 65 6e 64 69 |len,"\\"|);.#endi|
|000025d0| 66 0d 23 65 6e 64 69 66 | 0d 09 20 20 20 20 28 76 |f.#endif|.. (v|
|000025e0| 6f 69 64 29 73 74 72 63 | 61 74 28 74 6f 6b 65 6e |oid)strc|at(token|
|000025f0| 62 75 66 2b 6c 65 6e 2c | 73 63 72 69 70 74 6e 61 |buf+len,|scriptna|
|00002600| 6d 65 29 3b 0d 23 69 66 | 64 65 66 20 44 45 42 55 |me);.#if|def DEBU|
|00002610| 47 47 49 4e 47 0d 23 69 | 66 64 65 66 20 6d 61 63 |GGING.#i|fdef mac|
|00002620| 69 6e 74 6f 73 68 0d 09 | 20 20 20 20 69 66 20 28 |intosh..| if (|
|00002630| 64 65 62 75 67 20 26 20 | 31 29 0d 09 09 66 70 72 |debug & |1)...fpr|
|00002640| 69 6e 74 66 28 70 65 72 | 6c 64 62 67 2c 22 4c 6f |intf(per|ldbg,"Lo|
|00002650| 6f 6b 69 6e 67 20 66 6f | 72 20 25 73 5c 6e 22 2c |oking fo|r %s\n",|
|00002660| 74 6f 6b 65 6e 62 75 66 | 29 3b 0d 23 65 6c 73 65 |tokenbuf|);.#else|
|00002670| 0d 09 20 20 20 20 69 66 | 20 28 64 65 62 75 67 20 |.. if| (debug |
|00002680| 26 20 31 29 0d 09 09 66 | 70 72 69 6e 74 66 28 73 |& 1)...f|printf(s|
|00002690| 74 64 65 72 72 2c 22 4c | 6f 6f 6b 69 6e 67 20 66 |tderr,"L|ooking f|
|000026a0| 6f 72 20 25 73 5c 6e 22 | 2c 74 6f 6b 65 6e 62 75 |or %s\n"|,tokenbu|
|000026b0| 66 29 3b 0d 23 65 6e 64 | 69 66 0d 23 65 6e 64 69 |f);.#end|if.#endi|
|000026c0| 66 0d 09 20 20 20 20 69 | 66 20 28 73 74 61 74 28 |f.. i|f (stat(|
|000026d0| 74 6f 6b 65 6e 62 75 66 | 2c 26 73 74 61 74 62 75 |tokenbuf|,&statbu|
|000026e0| 66 29 20 3c 20 30 29 09 | 09 2f 2a 20 6e 6f 74 20 |f) < 0).|./* not |
|000026f0| 74 68 65 72 65 3f 20 2a | 2f 0d 09 09 63 6f 6e 74 |there? *|/...cont|
|00002700| 69 6e 75 65 3b 0d 09 20 | 20 20 20 69 66 20 28 53 |inue;.. | if (S|
|00002710| 5f 49 53 52 45 47 28 73 | 74 61 74 62 75 66 2e 73 |_ISREG(s|tatbuf.s|
|00002720| 74 5f 6d 6f 64 65 29 0d | 09 20 20 20 20 20 26 26 |t_mode).|. &&|
|00002730| 20 63 61 6e 64 6f 28 53 | 5f 49 52 55 53 52 2c 54 | cando(S|_IRUSR,T|
|00002740| 52 55 45 2c 26 73 74 61 | 74 62 75 66 29 20 26 26 |RUE,&sta|tbuf) &&|
|00002750| 20 63 61 6e 64 6f 28 53 | 5f 49 58 55 53 52 2c 54 | cando(S|_IXUSR,T|
|00002760| 52 55 45 2c 26 73 74 61 | 74 62 75 66 29 29 20 7b |RUE,&sta|tbuf)) {|
|00002770| 0d 09 09 78 66 6f 75 6e | 64 20 3d 20 74 6f 6b 65 |...xfoun|d = toke|
|00002780| 6e 62 75 66 3b 20 20 20 | 20 20 20 20 20 20 20 20 |nbuf; | |
|00002790| 20 20 20 2f 2a 20 62 69 | 6e 67 6f 21 20 2a 2f 0d | /* bi|ngo! */.|
|000027a0| 09 09 62 72 65 61 6b 3b | 0d 09 20 20 20 20 7d 0d |..break;|.. }.|
|000027b0| 09 20 20 20 20 69 66 20 | 28 21 78 66 61 69 6c 65 |. if |(!xfaile|
|000027c0| 64 29 0d 09 09 78 66 61 | 69 6c 65 64 20 3d 20 73 |d)...xfa|iled = s|
|000027d0| 61 76 65 73 74 72 28 74 | 6f 6b 65 6e 62 75 66 29 |avestr(t|okenbuf)|
|000027e0| 3b 0d 09 7d 0d 09 69 66 | 20 28 21 78 66 6f 75 6e |;..}..if| (!xfoun|
|000027f0| 64 29 0d 09 20 20 20 20 | 66 61 74 61 6c 28 22 43 |d).. |fatal("C|
|00002800| 61 6e 27 74 20 65 78 65 | 63 75 74 65 20 25 73 22 |an't exe|cute %s"|
|00002810| 2c 20 78 66 61 69 6c 65 | 64 20 3f 20 78 66 61 69 |, xfaile|d ? xfai|
|00002820| 6c 65 64 20 3a 20 73 63 | 72 69 70 74 6e 61 6d 65 |led : sc|riptname|
|00002830| 20 29 3b 0d 09 69 66 20 | 28 78 66 61 69 6c 65 64 | );..if |(xfailed|
|00002840| 29 0d 09 20 20 20 20 53 | 61 66 65 66 72 65 65 28 |).. S|afefree(|
|00002850| 78 66 61 69 6c 65 64 29 | 3b 0d 09 73 63 72 69 70 |xfailed)|;..scrip|
|00002860| 74 6e 61 6d 65 20 3d 20 | 73 61 76 65 73 74 72 28 |tname = |savestr(|
|00002870| 78 66 6f 75 6e 64 29 3b | 0d 20 20 20 20 7d 0d 0d |xfound);|. }..|
|00002880| 20 20 20 20 66 64 70 69 | 64 20 3d 20 61 6e 65 77 | fdpi|d = anew|
|00002890| 28 4e 75 6c 6c 73 74 61 | 62 29 3b 09 2f 2a 20 66 |(Nullsta|b);./* f|
|000028a0| 6f 72 20 72 65 6d 65 6d | 62 65 72 69 6e 67 20 70 |or remem|bering p|
|000028b0| 6f 70 65 6e 20 70 69 64 | 73 20 62 79 20 66 64 20 |open pid|s by fd |
|000028c0| 2a 2f 0d 20 20 20 20 70 | 69 64 73 74 61 74 75 73 |*/. p|idstatus|
|000028d0| 20 3d 20 68 6e 65 77 28 | 43 4f 45 46 46 53 49 5a | = hnew(|COEFFSIZ|
|000028e0| 45 29 3b 2f 2a 20 66 6f | 72 20 72 65 6d 65 6d 62 |E);/* fo|r rememb|
|000028f0| 65 72 69 6e 67 20 73 74 | 61 74 75 73 20 6f 66 20 |ering st|atus of |
|00002900| 64 65 61 64 20 70 69 64 | 73 20 2a 2f 0d 0d 20 20 |dead pid|s */.. |
|00002910| 20 20 6f 72 69 67 66 69 | 6c 65 6e 61 6d 65 20 3d | origfi|lename =|
|00002920| 20 73 61 76 65 73 74 72 | 28 73 63 72 69 70 74 6e | savestr|(scriptn|
|00002930| 61 6d 65 29 3b 0d 20 20 | 20 20 63 75 72 63 6d 64 |ame);. | curcmd|
|00002940| 2d 3e 63 5f 66 69 6c 65 | 73 74 61 62 20 3d 20 66 |->c_file|stab = f|
|00002950| 73 74 61 62 28 6f 72 69 | 67 66 69 6c 65 6e 61 6d |stab(ori|gfilenam|
|00002960| 65 29 3b 0d 20 20 20 20 | 69 66 20 28 73 74 72 45 |e);. |if (strE|
|00002970| 51 28 6f 72 69 67 66 69 | 6c 65 6e 61 6d 65 2c 22 |Q(origfi|lename,"|
|00002980| 2d 22 29 29 0d 09 61 72 | 67 76 5b 30 5d 20 3d 20 |-"))..ar|gv[0] = |
|00002990| 22 22 3b 0d 20 20 20 20 | 69 66 20 28 70 72 65 70 |"";. |if (prep|
|000029a0| 72 6f 63 65 73 73 29 20 | 7b 0d 23 69 66 6e 64 65 |rocess) |{.#ifnde|
|000029b0| 66 20 6d 61 63 69 6e 74 | 6f 73 68 0d 09 63 68 61 |f macint|osh..cha|
|000029c0| 72 20 2a 63 70 70 20 3d | 20 43 50 50 53 54 44 49 |r *cpp =| CPPSTDI|
|000029d0| 4e 3b 0d 0d 09 69 66 20 | 28 73 74 72 45 51 28 63 |N;...if |(strEQ(c|
|000029e0| 70 70 2c 22 63 70 70 73 | 74 64 69 6e 22 29 29 0d |pp,"cpps|tdin")).|
|000029f0| 09 20 20 20 20 73 70 72 | 69 6e 74 66 28 74 6f 6b |. spr|intf(tok|
|00002a00| 65 6e 62 75 66 2c 20 22 | 25 73 2f 25 73 22 2c 20 |enbuf, "|%s/%s", |
|00002a10| 53 43 52 49 50 54 44 49 | 52 2c 20 63 70 70 29 3b |SCRIPTDI|R, cpp);|
|00002a20| 0d 09 65 6c 73 65 0d 09 | 20 20 20 20 73 70 72 69 |..else..| spri|
|00002a30| 6e 74 66 28 74 6f 6b 65 | 6e 62 75 66 2c 20 22 25 |ntf(toke|nbuf, "%|
|00002a40| 73 22 2c 20 63 70 70 29 | 3b 0d 23 65 6e 64 69 66 |s", cpp)|;.#endif|
|00002a50| 0d 23 69 66 64 65 66 20 | 50 52 49 56 4c 49 42 0d |.#ifdef |PRIVLIB.|
|00002a60| 09 73 74 72 5f 63 61 74 | 28 73 74 72 2c 22 2d 49 |.str_cat|(str,"-I|
|00002a70| 22 29 3b 0d 09 73 74 72 | 5f 63 61 74 28 73 74 72 |");..str|_cat(str|
|00002a80| 2c 50 52 49 56 4c 49 42 | 29 3b 0d 23 65 6e 64 69 |,PRIVLIB|);.#endi|
|00002a90| 66 0d 23 69 66 64 65 66 | 20 6d 61 63 69 6e 74 6f |f.#ifdef| macinto|
|00002aa0| 73 68 0d 09 28 76 6f 69 | 64 29 73 70 72 69 6e 74 |sh..(voi|d)sprint|
|00002ab0| 66 28 62 75 66 2c 20 0d | 22 53 74 72 65 61 6d 45 |f(buf, .|"StreamE|
|00002ac0| 64 69 74 20 2d 65 20 27 | 2f a5 5b c2 23 5d 2f 22 |dit -e '|/.[.#]/"|
|00002ad0| 0d 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |. | |
|00002ae0| 20 22 7c 7c 2f 8d a5 23 | 5b 20 b6 74 5d 2a 69 6e | "||/..#|[ .t]*in|
|00002af0| 63 6c 75 64 65 5b 20 b6 | 74 5d 2f 22 0d 09 09 22 |clude[ .|t]/"..."|
|00002b00| 7c 7c 2f 8d a5 23 5b 20 | b6 74 5d 2a 64 65 66 69 |||/..#[ |.t]*defi|
|00002b10| 6e 65 5b 20 b6 74 5d 2f | 22 0d 09 09 22 7c 7c 2f |ne[ .t]/|"..."||/|
|00002b20| 8d a5 23 5b 20 b6 74 5d | 2a 69 66 5b 20 b6 74 5d |..#[ .t]|*if[ .t]|
|00002b30| 2f 22 0d 09 09 22 7c 7c | 2f 8d a5 23 5b 20 b6 74 |/"..."|||/..#[ .t|
|00002b40| 5d 2a 69 66 64 65 66 5b | 20 b6 74 5d 2f 22 0d 09 |]*ifdef[| .t]/"..|
|00002b50| 09 22 7c 7c 2f 8d a5 23 | 5b 20 b6 74 5d 2a 69 66 |."||/..#|[ .t]*if|
|00002b60| 6e 64 65 66 5b 20 b6 74 | 5d 2f 22 0d 09 09 22 7c |ndef[ .t|]/"..."||
|00002b70| 7c 2f 8d a5 23 5b 20 b6 | 74 5d 2a 65 6c 73 65 2f ||/..#[ .|t]*else/|
|00002b80| 22 0d 09 09 22 7c 7c 2f | 8d a5 23 5b 20 b6 74 5d |"..."||/|..#[ .t]|
|00002b90| 2a 65 6c 69 66 2f 22 0d | 09 09 22 7c 7c 2f 8d a5 |*elif/".|.."||/..|
|00002ba0| 23 5b 20 b6 74 5d 2a 75 | 6e 64 65 66 2f 22 0d 09 |#[ .t]*u|ndef/"..|
|00002bb0| 09 22 7c 7c 2f 8d a5 23 | 5b 20 b6 74 5d 2a 65 6e |."||/..#|[ .t]*en|
|00002bc0| 64 69 66 2f 20 4e 65 78 | 74 27 20 22 0d 09 20 20 |dif/ Nex|t' ".. |
|00002bd0| 20 20 20 20 20 09 22 2d | 65 20 27 2f 8d a5 5b 20 | ."-|e '/..[ |
|00002be0| b6 74 5d 2a 23 c5 2f 20 | 44 65 6c 65 74 65 27 20 |.t]*#./ |Delete' |
|00002bf0| 22 0d 22 20 25 73 20 7c | 20 43 20 2d 65 20 25 73 |"." %s || C -e %s|
|00002c00| 22 2c 0d 09 20 20 73 63 | 72 69 70 74 6e 61 6d 65 |",.. sc|riptname|
|00002c10| 2c 20 73 74 72 5f 67 65 | 74 28 73 74 72 29 29 3b |, str_ge|t(str));|
|00002c20| 0d 23 65 6c 73 65 0d 23 | 69 66 64 65 66 20 4d 53 |.#else.#|ifdef MS|
|00002c30| 44 4f 53 0d 09 28 76 6f | 69 64 29 73 70 72 69 6e |DOS..(vo|id)sprin|
|00002c40| 74 66 28 62 75 66 2c 20 | 22 5c 0d 73 65 64 20 25 |tf(buf, |"\.sed %|
|00002c50| 73 20 2d 65 20 5c 22 2f | 5e 5b 5e 23 5d 2f 62 5c |s -e \"/|^[^#]/b\|
|00002c60| 22 20 5c 0d 20 2d 65 20 | 5c 22 2f 5e 23 5b 20 09 |" \. -e |\"/^#[ .|
|00002c70| 5d 2a 69 6e 63 6c 75 64 | 65 5b 20 09 5d 2f 62 5c |]*includ|e[ .]/b\|
|00002c80| 22 20 5c 0d 20 2d 65 20 | 5c 22 2f 5e 23 5b 20 09 |" \. -e |\"/^#[ .|
|00002c90| 5d 2a 64 65 66 69 6e 65 | 5b 20 09 5d 2f 62 5c 22 |]*define|[ .]/b\"|
|00002ca0| 20 5c 0d 20 2d 65 20 5c | 22 2f 5e 23 5b 20 09 5d | \. -e \|"/^#[ .]|
|00002cb0| 2a 69 66 5b 20 09 5d 2f | 62 5c 22 20 5c 0d 20 2d |*if[ .]/|b\" \. -|
|00002cc0| 65 20 5c 22 2f 5e 23 5b | 20 09 5d 2a 69 66 64 65 |e \"/^#[| .]*ifde|
|00002cd0| 66 5b 20 09 5d 2f 62 5c | 22 20 5c 0d 20 2d 65 20 |f[ .]/b\|" \. -e |
|00002ce0| 5c 22 2f 5e 23 5b 20 09 | 5d 2a 69 66 6e 64 65 66 |\"/^#[ .|]*ifndef|
|00002cf0| 5b 20 09 5d 2f 62 5c 22 | 20 5c 0d 20 2d 65 20 5c |[ .]/b\"| \. -e \|
|00002d00| 22 2f 5e 23 5b 20 09 5d | 2a 65 6c 73 65 2f 62 5c |"/^#[ .]|*else/b\|
|00002d10| 22 20 5c 0d 20 2d 65 20 | 5c 22 2f 5e 23 5b 20 09 |" \. -e |\"/^#[ .|
|00002d20| 5d 2a 65 6c 69 66 5b 20 | 09 5d 2f 62 5c 22 20 5c |]*elif[ |.]/b\" \|
|00002d30| 0d 20 2d 65 20 5c 22 2f | 5e 23 5b 20 09 5d 2a 75 |. -e \"/|^#[ .]*u|
|00002d40| 6e 64 65 66 5b 20 09 5d | 2f 62 5c 22 20 5c 0d 20 |ndef[ .]|/b\" \. |
|00002d50| 2d 65 20 5c 22 2f 5e 23 | 5b 20 09 5d 2a 65 6e 64 |-e \"/^#|[ .]*end|
|00002d60| 69 66 2f 62 5c 22 20 5c | 0d 20 2d 65 20 5c 22 73 |if/b\" \|. -e \"s|
|00002d70| 2f 5e 23 2e 2a 2f 2f 5c | 22 20 5c 0d 20 25 73 20 |/^#.*//\|" \. %s |
|00002d80| 7c 20 25 73 20 2d 43 20 | 25 73 20 25 73 22 2c 0d || %s -C |%s %s",.|
|00002d90| 09 20 20 28 64 6f 65 78 | 74 72 61 63 74 20 3f 20 |. (doex|tract ? |
|00002da0| 22 2d 65 20 5c 22 31 2c | 2f 5e 23 2f 64 5c 6e 5c |"-e \"1,|/^#/d\n\|
|00002db0| 22 22 20 3a 20 22 22 29 | 2c 0d 23 65 6c 73 65 0d |"" : "")|,.#else.|
|00002dc0| 09 28 76 6f 69 64 29 73 | 70 72 69 6e 74 66 28 62 |.(void)s|printf(b|
|00002dd0| 75 66 2c 20 22 5c 0d 25 | 73 20 25 73 20 2d 65 20 |uf, "\.%|s %s -e |
|00002de0| 27 2f 5e 5b 5e 23 5d 2f | 62 27 20 5c 0d 20 2d 65 |'/^[^#]/|b' \. -e|
|00002df0| 20 27 2f 5e 23 5b 20 09 | 5d 2a 69 6e 63 6c 75 64 | '/^#[ .|]*includ|
|00002e00| 65 5b 20 09 5d 2f 62 27 | 20 5c 0d 20 2d 65 20 27 |e[ .]/b'| \. -e '|
|00002e10| 2f 5e 23 5b 20 09 5d 2a | 64 65 66 69 6e 65 5b 20 |/^#[ .]*|define[ |
|00002e20| 09 5d 2f 62 27 20 5c 0d | 20 2d 65 20 27 2f 5e 23 |.]/b' \.| -e '/^#|
|00002e30| 5b 20 09 5d 2a 69 66 5b | 20 09 5d 2f 62 27 20 5c |[ .]*if[| .]/b' \|
|00002e40| 0d 20 2d 65 20 27 2f 5e | 23 5b 20 09 5d 2a 69 66 |. -e '/^|#[ .]*if|
|00002e50| 64 65 66 5b 20 09 5d 2f | 62 27 20 5c 0d 20 2d 65 |def[ .]/|b' \. -e|
|00002e60| 20 27 2f 5e 23 5b 20 09 | 5d 2a 69 66 6e 64 65 66 | '/^#[ .|]*ifndef|
|00002e70| 5b 20 09 5d 2f 62 27 20 | 5c 0d 20 2d 65 20 27 2f |[ .]/b' |\. -e '/|
|00002e80| 5e 23 5b 20 09 5d 2a 65 | 6c 73 65 2f 62 27 20 5c |^#[ .]*e|lse/b' \|
|00002e90| 0d 20 2d 65 20 27 2f 5e | 23 5b 20 09 5d 2a 65 6c |. -e '/^|#[ .]*el|
|00002ea0| 69 66 5b 20 09 5d 2f 62 | 27 20 5c 0d 20 2d 65 20 |if[ .]/b|' \. -e |
|00002eb0| 27 2f 5e 23 5b 20 09 5d | 2a 75 6e 64 65 66 5b 20 |'/^#[ .]|*undef[ |
|00002ec0| 09 5d 2f 62 27 20 5c 0d | 20 2d 65 20 27 2f 5e 23 |.]/b' \.| -e '/^#|
|00002ed0| 5b 20 09 5d 2a 65 6e 64 | 69 66 2f 62 27 20 5c 0d |[ .]*end|if/b' \.|
|00002ee0| 20 2d 65 20 27 73 2f 5e | 5b 20 09 5d 2a 23 2e 2a | -e 's/^|[ .]*#.*|
|00002ef0| 2f 2f 27 20 5c 0d 20 25 | 73 20 7c 20 25 73 20 2d |//' \. %|s | %s -|
|00002f00| 43 20 25 73 20 25 73 22 | 2c 0d 23 69 66 64 65 66 |C %s %s"|,.#ifdef|
|00002f10| 20 4c 4f 43 5f 53 45 44 | 0d 09 20 20 4c 4f 43 5f | LOC_SED|.. LOC_|
|00002f20| 53 45 44 2c 0d 23 65 6c | 73 65 0d 09 20 20 22 73 |SED,.#el|se.. "s|
|00002f30| 65 64 22 2c 0d 23 65 6e | 64 69 66 0d 09 20 20 28 |ed",.#en|dif.. (|
|00002f40| 64 6f 65 78 74 72 61 63 | 74 20 3f 20 22 2d 65 20 |doextrac|t ? "-e |
|00002f50| 27 31 2c 2f 5e 23 2f 64 | 5c 6e 27 22 20 3a 20 22 |'1,/^#/d|\n'" : "|
|00002f60| 22 29 2c 0d 23 65 6e 64 | 69 66 0d 09 20 20 73 63 |"),.#end|if.. sc|
|00002f70| 72 69 70 74 6e 61 6d 65 | 2c 20 74 6f 6b 65 6e 62 |riptname|, tokenb|
|00002f80| 75 66 2c 20 73 74 72 5f | 67 65 74 28 73 74 72 29 |uf, str_|get(str)|
|00002f90| 2c 20 43 50 50 4d 49 4e | 55 53 29 3b 0d 23 65 6e |, CPPMIN|US);.#en|
|00002fa0| 64 69 66 0d 23 69 66 64 | 65 66 20 44 45 42 55 47 |dif.#ifd|ef DEBUG|
|00002fb0| 47 49 4e 47 0d 23 69 66 | 64 65 66 20 6d 61 63 69 |GING.#if|def maci|
|00002fc0| 6e 74 6f 73 68 0d 09 69 | 66 20 28 64 65 62 75 67 |ntosh..i|f (debug|
|00002fd0| 20 26 20 36 34 29 20 7b | 0d 09 20 20 20 20 66 70 | & 64) {|.. fp|
|00002fe0| 75 74 73 28 62 75 66 2c | 70 65 72 6c 64 62 67 29 |uts(buf,|perldbg)|
|00002ff0| 3b 0d 09 20 20 20 20 66 | 70 75 74 73 28 22 5c 6e |;.. f|puts("\n|
|00003000| 22 2c 70 65 72 6c 64 62 | 67 29 3b 0d 09 7d 0d 23 |",perldb|g);..}.#|
|00003010| 65 6c 73 65 0d 09 69 66 | 20 28 64 65 62 75 67 20 |else..if| (debug |
|00003020| 26 20 36 34 29 20 7b 0d | 09 20 20 20 20 66 70 75 |& 64) {.|. fpu|
|00003030| 74 73 28 62 75 66 2c 73 | 74 64 65 72 72 29 3b 0d |ts(buf,s|tderr);.|
|00003040| 09 20 20 20 20 66 70 75 | 74 73 28 22 5c 6e 22 2c |. fpu|ts("\n",|
|00003050| 73 74 64 65 72 72 29 3b | 0d 09 7d 0d 23 65 6e 64 |stderr);|..}.#end|
|00003060| 69 66 0d 23 65 6e 64 69 | 66 0d 09 64 6f 65 78 74 |if.#endi|f..doext|
|00003070| 72 61 63 74 20 3d 20 46 | 41 4c 53 45 3b 0d 23 69 |ract = F|ALSE;.#i|
|00003080| 66 64 65 66 20 49 41 4d | 53 55 49 44 09 09 09 09 |fdef IAM|SUID....|
|00003090| 2f 2a 20 61 63 74 75 61 | 6c 6c 79 2c 20 74 68 69 |/* actua|lly, thi|
|000030a0| 73 20 69 73 20 63 61 75 | 67 68 74 20 65 61 72 6c |s is cau|ght earl|
|000030b0| 69 65 72 20 2a 2f 0d 09 | 69 66 20 28 65 75 69 64 |ier */..|if (euid|
|000030c0| 20 21 3d 20 75 69 64 20 | 26 26 20 21 65 75 69 64 | != uid |&& !euid|
|000030d0| 29 20 7b 09 2f 2a 20 69 | 66 20 72 75 6e 6e 69 6e |) {./* i|f runnin|
|000030e0| 67 20 73 75 69 64 70 65 | 72 6c 20 2a 2f 0d 23 69 |g suidpe|rl */.#i|
|000030f0| 66 64 65 66 20 48 41 53 | 5f 53 45 54 45 55 49 44 |fdef HAS|_SETEUID|
|00003100| 0d 09 20 20 20 20 28 76 | 6f 69 64 29 73 65 74 65 |.. (v|oid)sete|
|00003110| 75 69 64 28 75 69 64 29 | 3b 09 09 2f 2a 20 6d 75 |uid(uid)|;../* mu|
|00003120| 73 6e 27 74 20 73 74 61 | 79 20 73 65 74 75 69 64 |sn't sta|y setuid|
|00003130| 20 72 6f 6f 74 20 2a 2f | 0d 23 65 6c 73 65 0d 23 | root */|.#else.#|
|00003140| 69 66 64 65 66 20 48 41 | 53 5f 53 45 54 52 45 55 |ifdef HA|S_SETREU|
|00003150| 49 44 0d 09 20 20 20 20 | 28 76 6f 69 64 29 73 65 |ID.. |(void)se|
|00003160| 74 72 65 75 69 64 28 2d | 31 2c 20 75 69 64 29 3b |treuid(-|1, uid);|
|00003170| 0d 23 65 6c 73 65 0d 09 | 20 20 20 20 73 65 74 75 |.#else..| setu|
|00003180| 69 64 28 75 69 64 29 3b | 0d 23 65 6e 64 69 66 0d |id(uid);|.#endif.|
|00003190| 23 65 6e 64 69 66 0d 09 | 20 20 20 20 69 66 20 28 |#endif..| if (|
|000031a0| 67 65 74 65 75 69 64 28 | 29 20 21 3d 20 75 69 64 |geteuid(|) != uid|
|000031b0| 29 0d 09 09 66 61 74 61 | 6c 28 22 43 61 6e 27 74 |)...fata|l("Can't|
|000031c0| 20 64 6f 20 73 65 74 65 | 75 69 64 21 5c 6e 22 29 | do sete|uid!\n")|
|000031d0| 3b 0d 09 7d 0d 23 65 6e | 64 69 66 20 2f 2a 20 49 |;..}.#en|dif /* I|
|000031e0| 41 4d 53 55 49 44 20 2a | 2f 0d 09 72 73 66 70 20 |AMSUID *|/..rsfp |
|000031f0| 3d 20 6d 79 70 6f 70 65 | 6e 28 62 75 66 2c 22 72 |= mypope|n(buf,"r|
|00003200| 22 29 3b 0d 20 20 20 20 | 7d 0d 20 20 20 20 65 6c |");. |}. el|
|00003210| 73 65 20 69 66 20 28 21 | 2a 73 63 72 69 70 74 6e |se if (!|*scriptn|
|00003220| 61 6d 65 29 20 7b 0d 23 | 69 66 64 65 66 20 54 41 |ame) {.#|ifdef TA|
|00003230| 49 4e 54 0d 09 69 66 20 | 28 65 75 69 64 20 21 3d |INT..if |(euid !=|
|00003240| 20 75 69 64 20 7c 7c 20 | 65 67 69 64 20 21 3d 20 | uid || |egid != |
|00003250| 67 69 64 29 0d 09 20 20 | 20 20 66 61 74 61 6c 28 |gid).. | fatal(|
|00003260| 22 43 61 6e 27 74 20 74 | 61 6b 65 20 73 65 74 2d |"Can't t|ake set-|
|00003270| 69 64 20 73 63 72 69 70 | 74 20 66 72 6f 6d 20 73 |id scrip|t from s|
|00003280| 74 64 69 6e 22 29 3b 0d | 23 65 6e 64 69 66 0d 09 |tdin");.|#endif..|
|00003290| 72 73 66 70 20 3d 20 73 | 74 64 69 6e 3b 0d 20 20 |rsfp = s|tdin;. |
|000032a0| 20 20 7d 0d 20 20 20 20 | 65 6c 73 65 0d 09 72 73 | }. |else..rs|
|000032b0| 66 70 20 3d 20 66 6f 70 | 65 6e 28 73 63 72 69 70 |fp = fop|en(scrip|
|000032c0| 74 6e 61 6d 65 2c 22 72 | 22 29 3b 0d 20 20 20 20 |tname,"r|");. |
|000032d0| 69 66 20 28 28 46 49 4c | 45 2a 29 72 73 66 70 20 |if ((FIL|E*)rsfp |
|000032e0| 3d 3d 20 4e 75 6c 6c 66 | 70 29 20 7b 0d 23 69 66 |== Nullf|p) {.#if|
|000032f0| 64 65 66 20 44 4f 53 55 | 49 44 0d 23 69 66 6e 64 |def DOSU|ID.#ifnd|
|00003300| 65 66 20 49 41 4d 53 55 | 49 44 09 09 2f 2a 20 69 |ef IAMSU|ID../* i|
|00003310| 6e 20 63 61 73 65 20 73 | 63 72 69 70 74 20 69 73 |n case s|cript is|
|00003320| 20 6e 6f 74 20 72 65 61 | 64 61 62 6c 65 20 62 65 | not rea|dable be|
|00003330| 66 6f 72 65 20 73 65 74 | 75 69 64 20 2a 2f 0d 09 |fore set|uid */..|
|00003340| 69 66 20 28 65 75 69 64 | 20 26 26 20 73 74 61 74 |if (euid| && stat|
|00003350| 28 73 74 61 62 5f 76 61 | 6c 28 63 75 72 63 6d 64 |(stab_va|l(curcmd|
|00003360| 2d 3e 63 5f 66 69 6c 65 | 73 74 61 62 29 2d 3e 73 |->c_file|stab)->s|
|00003370| 74 72 5f 70 74 72 2c 26 | 73 74 61 74 62 75 66 29 |tr_ptr,&|statbuf)|
|00003380| 20 3e 3d 20 30 20 26 26 | 0d 09 20 20 73 74 61 74 | >= 0 &&|.. stat|
|00003390| 62 75 66 2e 73 74 5f 6d | 6f 64 65 20 26 20 28 53 |buf.st_m|ode & (S|
|000033a0| 5f 49 53 55 49 44 7c 53 | 5f 49 53 47 49 44 29 29 |_ISUID|S|_ISGID))|
|000033b0| 20 7b 0d 09 20 20 20 20 | 28 76 6f 69 64 29 73 70 | {.. |(void)sp|
|000033c0| 72 69 6e 74 66 28 62 75 | 66 2c 20 22 25 73 2f 73 |rintf(bu|f, "%s/s|
|000033d0| 70 65 72 6c 25 73 22 2c | 20 42 49 4e 2c 20 70 61 |perl%s",| BIN, pa|
|000033e0| 74 63 68 6c 65 76 65 6c | 29 3b 0d 09 20 20 20 20 |tchlevel|);.. |
|000033f0| 65 78 65 63 76 28 62 75 | 66 2c 20 6f 72 69 67 61 |execv(bu|f, origa|
|00003400| 72 67 76 29 3b 09 2f 2a | 20 74 72 79 20 61 67 61 |rgv);./*| try aga|
|00003410| 69 6e 20 2a 2f 0d 09 20 | 20 20 20 66 61 74 61 6c |in */.. | fatal|
|00003420| 28 22 43 61 6e 27 74 20 | 64 6f 20 73 65 74 75 69 |("Can't |do setui|
|00003430| 64 5c 6e 22 29 3b 0d 09 | 7d 0d 23 65 6e 64 69 66 |d\n");..|}.#endif|
|00003440| 0d 23 65 6e 64 69 66 0d | 09 66 61 74 61 6c 28 22 |.#endif.|.fatal("|
|00003450| 43 61 6e 27 74 20 6f 70 | 65 6e 20 70 65 72 6c 20 |Can't op|en perl |
|00003460| 73 63 72 69 70 74 20 5c | 22 25 73 5c 22 3a 20 25 |script \|"%s\": %|
|00003470| 73 5c 6e 22 2c 0d 09 20 | 20 73 74 61 62 5f 76 61 |s\n",.. | stab_va|
|00003480| 6c 28 63 75 72 63 6d 64 | 2d 3e 63 5f 66 69 6c 65 |l(curcmd|->c_file|
|00003490| 73 74 61 62 29 2d 3e 73 | 74 72 5f 70 74 72 2c 20 |stab)->s|tr_ptr, |
|000034a0| 73 74 72 65 72 72 6f 72 | 28 65 72 72 6e 6f 29 29 |strerror|(errno))|
|000034b0| 3b 0d 20 20 20 20 7d 0d | 20 20 20 20 73 74 72 5f |;. }.| str_|
|000034c0| 66 72 65 65 28 73 74 72 | 29 3b 09 09 2f 2a 20 66 |free(str|);../* f|
|000034d0| 72 65 65 20 2d 49 20 64 | 69 72 65 63 74 6f 72 69 |ree -I d|irectori|
|000034e0| 65 73 20 2a 2f 0d 20 20 | 20 20 73 74 72 20 3d 20 |es */. | str = |
|000034f0| 4e 75 6c 6c 73 74 72 3b | 0d 0d 20 20 20 20 2f 2a |Nullstr;|.. /*|
|00003500| 20 64 6f 20 77 65 20 6e | 65 65 64 20 74 6f 20 65 | do we n|eed to e|
|00003510| 6d 75 6c 61 74 65 20 73 | 65 74 75 69 64 20 6f 6e |mulate s|etuid on|
|00003520| 20 73 63 72 69 70 74 73 | 3f 20 2a 2f 0d 0d 20 20 | scripts|? */.. |
|00003530| 20 20 2f 2a 20 54 68 69 | 73 20 63 6f 64 65 20 69 | /* Thi|s code i|
|00003540| 73 20 66 6f 72 20 74 68 | 6f 73 65 20 42 53 44 20 |s for th|ose BSD |
|00003550| 73 79 73 74 65 6d 73 20 | 74 68 61 74 20 68 61 76 |systems |that hav|
|00003560| 65 20 73 65 74 75 69 64 | 20 23 21 20 73 63 72 69 |e setuid| #! scri|
|00003570| 70 74 73 20 64 69 73 61 | 62 6c 65 64 0d 20 20 20 |pts disa|bled. |
|00003580| 20 20 2a 20 69 6e 20 74 | 68 65 20 6b 65 72 6e 65 | * in t|he kerne|
|00003590| 6c 20 62 65 63 61 75 73 | 65 20 6f 66 20 61 20 73 |l becaus|e of a s|
|000035a0| 65 63 75 72 69 74 79 20 | 70 72 6f 62 6c 65 6d 2e |ecurity |problem.|
|000035b0| 20 20 4d 65 72 65 6c 79 | 20 64 65 66 69 6e 69 6e | Merely| definin|
|000035c0| 67 20 44 4f 53 55 49 44 | 0d 20 20 20 20 20 2a 20 |g DOSUID|. * |
|000035d0| 69 6e 20 70 65 72 6c 20 | 77 69 6c 6c 20 6e 6f 74 |in perl |will not|
|000035e0| 20 66 69 78 20 74 68 61 | 74 20 70 72 6f 62 6c 65 | fix tha|t proble|
|000035f0| 6d 2c 20 62 75 74 20 69 | 66 20 79 6f 75 20 68 61 |m, but i|f you ha|
|00003600| 76 65 20 64 69 73 61 62 | 6c 65 64 20 73 65 74 75 |ve disab|led setu|
|00003610| 69 64 0d 20 20 20 20 20 | 2a 20 73 63 72 69 70 74 |id. |* script|
|00003620| 73 20 69 6e 20 74 68 65 | 20 6b 65 72 6e 65 6c 2c |s in the| kernel,|
|00003630| 20 74 68 69 73 20 77 69 | 6c 6c 20 61 74 74 65 6d | this wi|ll attem|
|00003640| 70 74 20 74 6f 20 65 6d | 75 6c 61 74 65 20 73 65 |pt to em|ulate se|
|00003650| 74 75 69 64 20 61 6e 64 | 20 73 65 74 67 69 64 0d |tuid and| setgid.|
|00003660| 20 20 20 20 20 2a 20 6f | 6e 20 73 63 72 69 70 74 | * o|n script|
|00003670| 73 20 74 68 61 74 20 68 | 61 76 65 20 74 68 6f 73 |s that h|ave thos|
|00003680| 65 20 6e 6f 77 2d 6f 74 | 68 65 72 77 69 73 65 2d |e now-ot|herwise-|
|00003690| 75 73 65 6c 65 73 73 20 | 62 69 74 73 20 73 65 74 |useless |bits set|
|000036a0| 2e 20 20 54 68 65 20 73 | 65 74 75 69 64 0d 20 20 |. The s|etuid. |
|000036b0| 20 20 20 2a 20 72 6f 6f | 74 20 76 65 72 73 69 6f | * roo|t versio|
|000036c0| 6e 20 6d 75 73 74 20 62 | 65 20 63 61 6c 6c 65 64 |n must b|e called|
|000036d0| 20 73 75 69 64 70 65 72 | 6c 20 6f 72 20 73 70 65 | suidper|l or spe|
|000036e0| 72 6c 4e 2e 4e 4e 4e 2e | 20 20 49 66 20 72 65 67 |rlN.NNN.| If reg|
|000036f0| 75 6c 61 72 20 70 65 72 | 6c 0d 20 20 20 20 20 2a |ular per|l. *|
|00003700| 20 64 69 73 63 6f 76 65 | 72 73 20 74 68 61 74 20 | discove|rs that |
|00003710| 69 74 20 68 61 73 20 6f | 70 65 6e 65 64 20 61 20 |it has o|pened a |
|00003720| 73 65 74 75 69 64 20 73 | 63 72 69 70 74 2c 20 69 |setuid s|cript, i|
|00003730| 74 20 63 61 6c 6c 73 20 | 73 75 69 64 70 65 72 6c |t calls |suidperl|
|00003740| 20 77 69 74 68 0d 20 20 | 20 20 20 2a 20 74 68 65 | with. | * the|
|00003750| 20 73 61 6d 65 20 61 72 | 67 76 20 74 68 61 74 20 | same ar|gv that |
|00003760| 69 74 20 68 61 64 2e 20 | 20 49 66 20 73 75 69 64 |it had. | If suid|
|00003770| 70 65 72 6c 20 66 69 6e | 64 73 20 74 68 61 74 20 |perl fin|ds that |
|00003780| 74 68 65 20 73 63 72 69 | 70 74 20 69 74 20 68 61 |the scri|pt it ha|
|00003790| 73 0d 20 20 20 20 20 2a | 20 6a 75 73 74 20 6f 70 |s. *| just op|
|000037a0| 65 6e 65 64 20 69 73 20 | 4e 4f 54 20 73 65 74 75 |ened is |NOT setu|
|000037b0| 69 64 20 72 6f 6f 74 2c | 20 69 74 20 73 65 74 73 |id root,| it sets|
|000037c0| 20 74 68 65 20 65 66 66 | 65 63 74 69 76 65 20 75 | the eff|ective u|
|000037d0| 69 64 20 62 61 63 6b 20 | 74 6f 20 74 68 65 0d 20 |id back |to the. |
|000037e0| 20 20 20 20 2a 20 75 69 | 64 2e 20 20 57 65 20 64 | * ui|d. We d|
|000037f0| 6f 6e 27 74 20 6a 75 73 | 74 20 6d 61 6b 65 20 70 |on't jus|t make p|
|00003800| 65 72 6c 20 73 65 74 75 | 69 64 20 72 6f 6f 74 20 |erl setu|id root |
|00003810| 62 65 63 61 75 73 65 20 | 74 68 61 74 20 6c 6f 73 |because |that los|
|00003820| 65 73 20 74 68 65 0d 20 | 20 20 20 20 2a 20 65 66 |es the. | * ef|
|00003830| 66 65 63 74 69 76 65 20 | 75 69 64 20 77 65 20 68 |fective |uid we h|
|00003840| 61 64 20 62 65 66 6f 72 | 65 20 69 6e 76 6f 6b 69 |ad befor|e invoki|
|00003850| 6e 67 20 70 65 72 6c 2c | 20 69 66 20 69 74 20 77 |ng perl,| if it w|
|00003860| 61 73 20 64 69 66 66 65 | 72 65 6e 74 20 66 72 6f |as diffe|rent fro|
|00003870| 6d 20 74 68 65 0d 20 20 | 20 20 20 2a 20 75 69 64 |m the. | * uid|
|00003880| 2e 0d 20 20 20 20 20 2a | 0d 20 20 20 20 20 2a 20 |.. *|. * |
|00003890| 44 4f 53 55 49 44 20 6d | 75 73 74 20 62 65 20 64 |DOSUID m|ust be d|
|000038a0| 65 66 69 6e 65 64 20 69 | 6e 20 62 6f 74 68 20 70 |efined i|n both p|
|000038b0| 65 72 6c 20 61 6e 64 20 | 73 75 69 64 70 65 72 6c |erl and |suidperl|
|000038c0| 2c 20 61 6e 64 20 49 41 | 4d 53 55 49 44 20 6d 75 |, and IA|MSUID mu|
|000038d0| 73 74 0d 20 20 20 20 20 | 2a 20 62 65 20 64 65 66 |st. |* be def|
|000038e0| 69 6e 65 64 20 69 6e 20 | 73 75 69 64 70 65 72 6c |ined in |suidperl|
|000038f0| 20 6f 6e 6c 79 2e 20 20 | 73 75 69 64 70 65 72 6c | only. |suidperl|
|00003900| 20 6d 75 73 74 20 62 65 | 20 73 65 74 75 69 64 20 | must be| setuid |
|00003910| 72 6f 6f 74 2e 20 20 54 | 68 65 0d 20 20 20 20 20 |root. T|he. |
|00003920| 2a 20 43 6f 6e 66 69 67 | 75 72 65 20 73 63 72 69 |* Config|ure scri|
|00003930| 70 74 20 77 69 6c 6c 20 | 73 65 74 20 74 68 69 73 |pt will |set this|
|00003940| 20 75 70 20 66 6f 72 20 | 79 6f 75 20 69 66 20 79 | up for |you if y|
|00003950| 6f 75 20 77 61 6e 74 20 | 69 74 2e 0d 20 20 20 20 |ou want |it.. |
|00003960| 20 2a 0d 20 20 20 20 20 | 2a 20 54 68 65 72 65 20 | *. |* There |
|00003970| 69 73 20 61 6c 73 6f 20 | 74 68 65 20 70 6f 73 73 |is also |the poss|
|00003980| 69 62 69 6c 69 74 79 20 | 6f 66 20 68 61 76 65 20 |ibility |of have |
|00003990| 61 20 73 63 72 69 70 74 | 20 77 68 69 63 68 20 69 |a script| which i|
|000039a0| 73 20 72 75 6e 6e 69 6e | 67 0d 20 20 20 20 20 2a |s runnin|g. *|
|000039b0| 20 73 65 74 2d 69 64 20 | 64 75 65 20 74 6f 20 61 | set-id |due to a|
|000039c0| 20 43 20 77 72 61 70 70 | 65 72 2e 20 20 57 65 20 | C wrapp|er. We |
|000039d0| 77 61 6e 74 20 74 6f 20 | 64 6f 20 74 68 65 20 54 |want to |do the T|
|000039e0| 41 49 4e 54 20 63 68 65 | 63 6b 73 0d 20 20 20 20 |AINT che|cks. |
|000039f0| 20 2a 20 6f 6e 20 74 68 | 65 73 65 20 73 65 74 2d | * on th|ese set-|
|00003a00| 69 64 20 73 63 72 69 70 | 74 73 2c 20 62 75 74 20 |id scrip|ts, but |
|00003a10| 64 6f 6e 27 74 20 77 61 | 6e 74 20 74 6f 20 68 61 |don't wa|nt to ha|
|00003a20| 76 65 20 74 68 65 20 6f | 76 65 72 68 65 61 64 20 |ve the o|verhead |
|00003a30| 6f 66 0d 20 20 20 20 20 | 2a 20 74 68 65 6d 20 69 |of. |* them i|
|00003a40| 6e 20 6e 6f 72 6d 61 6c | 20 70 65 72 6c 2c 20 61 |n normal| perl, a|
|00003a50| 6e 64 20 63 61 6e 27 74 | 20 75 73 65 20 73 75 69 |nd can't| use sui|
|00003a60| 64 70 65 72 6c 20 62 65 | 63 61 75 73 65 20 69 74 |dperl be|cause it|
|00003a70| 20 77 69 6c 6c 20 6c 6f | 73 65 0d 20 20 20 20 20 | will lo|se. |
|00003a80| 2a 20 74 68 65 20 65 66 | 66 65 63 74 69 76 65 20 |* the ef|fective |
|00003a90| 75 69 64 20 69 6e 66 6f | 2c 20 73 6f 20 77 65 20 |uid info|, so we |
|00003aa0| 68 61 76 65 20 61 6e 20 | 61 64 64 69 74 69 6f 6e |have an |addition|
|00003ab0| 61 6c 20 6e 6f 6e 2d 73 | 65 74 75 69 64 20 72 6f |al non-s|etuid ro|
|00003ac0| 6f 74 0d 20 20 20 20 20 | 2a 20 76 65 72 73 69 6f |ot. |* versio|
|00003ad0| 6e 20 63 61 6c 6c 65 64 | 20 74 61 69 6e 74 70 65 |n called| taintpe|
|00003ae0| 72 6c 20 6f 72 20 74 70 | 65 72 6c 4e 2e 4e 4e 4e |rl or tp|erlN.NNN|
|00003af0| 20 74 68 61 74 20 6a 75 | 73 74 20 64 6f 65 73 20 | that ju|st does |
|00003b00| 74 68 65 20 54 41 49 4e | 54 20 63 68 65 63 6b 73 |the TAIN|T checks|
|00003b10| 2e 0d 20 20 20 20 20 2a | 2f 0d 0d 23 69 66 64 65 |.. *|/..#ifde|
|00003b20| 66 20 44 4f 53 55 49 44 | 0d 20 20 20 20 69 66 20 |f DOSUID|. if |
|00003b30| 28 66 73 74 61 74 28 66 | 69 6c 65 6e 6f 28 72 73 |(fstat(f|ileno(rs|
|00003b40| 66 70 29 2c 26 73 74 61 | 74 62 75 66 29 20 3c 20 |fp),&sta|tbuf) < |
|00003b50| 30 29 09 2f 2a 20 6e 6f | 72 6d 61 6c 20 73 74 61 |0)./* no|rmal sta|
|00003b60| 74 20 69 73 20 69 6e 73 | 65 63 75 72 65 20 2a 2f |t is ins|ecure */|
|00003b70| 0d 09 66 61 74 61 6c 28 | 22 43 61 6e 27 74 20 73 |..fatal(|"Can't s|
|00003b80| 74 61 74 20 73 63 72 69 | 70 74 20 5c 22 25 73 5c |tat scri|pt \"%s\|
|00003b90| 22 22 2c 6f 72 69 67 66 | 69 6c 65 6e 61 6d 65 29 |"",origf|ilename)|
|00003ba0| 3b 0d 20 20 20 20 69 66 | 20 28 73 74 61 74 62 75 |;. if| (statbu|
|00003bb0| 66 2e 73 74 5f 6d 6f 64 | 65 20 26 20 28 53 5f 49 |f.st_mod|e & (S_I|
|00003bc0| 53 55 49 44 7c 53 5f 49 | 53 47 49 44 29 29 20 7b |SUID|S_I|SGID)) {|
|00003bd0| 0d 09 69 6e 74 20 6c 65 | 6e 3b 0d 0d 23 69 66 64 |..int le|n;..#ifd|
|00003be0| 65 66 20 49 41 4d 53 55 | 49 44 0d 23 69 66 6e 64 |ef IAMSU|ID.#ifnd|
|00003bf0| 65 66 20 48 41 53 5f 53 | 45 54 52 45 55 49 44 0d |ef HAS_S|ETREUID.|
|00003c00| 09 2f 2a 20 4f 6e 20 74 | 68 69 73 20 61 63 63 65 |./* On t|his acce|
|00003c10| 73 73 20 63 68 65 63 6b | 20 74 6f 20 6d 61 6b 65 |ss check| to make|
|00003c20| 20 73 75 72 65 20 74 68 | 65 20 64 69 72 65 63 74 | sure th|e direct|
|00003c30| 6f 72 69 65 73 20 61 72 | 65 20 72 65 61 64 61 62 |ories ar|e readab|
|00003c40| 6c 65 2c 0d 09 20 2a 20 | 74 68 65 72 65 20 69 73 |le,.. * |there is|
|00003c50| 20 61 63 74 75 61 6c 6c | 79 20 61 20 73 6d 61 6c | actuall|y a smal|
|00003c60| 6c 20 77 69 6e 64 6f 77 | 20 74 68 61 74 20 74 68 |l window| that th|
|00003c70| 65 20 75 73 65 72 20 63 | 6f 75 6c 64 20 75 73 65 |e user c|ould use|
|00003c80| 20 74 6f 20 6d 61 6b 65 | 0d 09 20 2a 20 66 69 6c | to make|.. * fil|
|00003c90| 65 6e 61 6d 65 20 70 6f | 69 6e 74 20 74 6f 20 61 |ename po|int to a|
|00003ca0| 6e 20 61 63 63 65 73 73 | 69 62 6c 65 20 64 69 72 |n access|ible dir|
|00003cb0| 65 63 74 6f 72 79 2e 20 | 20 53 6f 20 74 68 65 72 |ectory. | So ther|
|00003cc0| 65 20 69 73 20 61 20 66 | 61 69 6e 74 0d 09 20 2a |e is a f|aint.. *|
|00003cd0| 20 63 68 61 6e 63 65 20 | 74 68 61 74 20 73 6f 6d | chance |that som|
|00003ce0| 65 6f 6e 65 20 63 6f 75 | 6c 64 20 65 78 65 63 75 |eone cou|ld execu|
|00003cf0| 74 65 20 61 20 73 65 74 | 75 69 64 20 73 63 72 69 |te a set|uid scri|
|00003d00| 70 74 20 64 6f 77 6e 20 | 69 6e 20 61 0d 09 20 2a |pt down |in a.. *|
|00003d10| 20 6e 6f 6e 2d 61 63 63 | 65 73 73 69 62 6c 65 20 | non-acc|essible |
|00003d20| 64 69 72 65 63 74 6f 72 | 79 2e 20 20 49 20 64 6f |director|y. I do|
|00003d30| 6e 27 74 20 6b 6e 6f 77 | 20 77 68 61 74 20 74 6f |n't know| what to|
|00003d40| 20 64 6f 20 61 62 6f 75 | 74 20 74 68 61 74 2e 0d | do abou|t that..|
|00003d50| 09 20 2a 20 42 75 74 20 | 49 20 64 6f 6e 27 74 20 |. * But |I don't |
|00003d60| 74 68 69 6e 6b 20 69 74 | 27 73 20 74 6f 6f 20 69 |think it|'s too i|
|00003d70| 6d 70 6f 72 74 61 6e 74 | 2e 20 20 54 68 65 20 6d |mportant|. The m|
|00003d80| 61 6e 75 61 6c 20 6c 69 | 65 73 20 77 68 65 6e 0d |anual li|es when.|
|00003d90| 09 20 2a 20 69 74 20 73 | 61 79 73 20 61 63 63 65 |. * it s|ays acce|
|00003da0| 73 73 28 29 20 69 73 20 | 75 73 65 66 75 6c 20 69 |ss() is |useful i|
|00003db0| 6e 20 73 65 74 75 69 64 | 20 70 72 6f 67 72 61 6d |n setuid| program|
|00003dc0| 73 2e 0d 09 20 2a 2f 0d | 09 69 66 20 28 61 63 63 |s... */.|.if (acc|
|00003dd0| 65 73 73 28 73 74 61 62 | 5f 76 61 6c 28 63 75 72 |ess(stab|_val(cur|
|00003de0| 63 6d 64 2d 3e 63 5f 66 | 69 6c 65 73 74 61 62 29 |cmd->c_f|ilestab)|
|00003df0| 2d 3e 73 74 72 5f 70 74 | 72 2c 31 29 29 09 2f 2a |->str_pt|r,1))./*|
|00003e00| 64 6f 75 62 6c 65 20 63 | 68 65 63 6b 2a 2f 0d 09 |double c|heck*/..|
|00003e10| 20 20 20 20 66 61 74 61 | 6c 28 22 50 65 72 6d 69 | fata|l("Permi|
|00003e20| 73 73 69 6f 6e 20 64 65 | 6e 69 65 64 22 29 3b 0d |ssion de|nied");.|
|00003e30| 23 65 6c 73 65 0d 09 2f | 2a 20 49 66 20 77 65 20 |#else../|* If we |
|00003e40| 63 61 6e 20 73 77 61 70 | 20 65 75 69 64 20 61 6e |can swap| euid an|
|00003e50| 64 20 75 69 64 2c 20 74 | 68 65 6e 20 77 65 20 63 |d uid, t|hen we c|
|00003e60| 61 6e 20 64 65 74 65 72 | 6d 69 6e 65 20 61 63 63 |an deter|mine acc|
|00003e70| 65 73 73 20 72 69 67 68 | 74 73 0d 09 20 2a 20 77 |ess righ|ts.. * w|
|00003e80| 69 74 68 20 61 20 73 69 | 6d 70 6c 65 20 73 74 61 |ith a si|mple sta|
|00003e90| 74 20 6f 66 20 74 68 65 | 20 66 69 6c 65 2c 20 61 |t of the| file, a|
|00003ea0| 6e 64 20 74 68 65 6e 20 | 63 6f 6d 70 61 72 65 20 |nd then |compare |
|00003eb0| 64 65 76 69 63 65 20 61 | 6e 64 0d 09 20 2a 20 69 |device a|nd.. * i|
|00003ec0| 6e 6f 64 65 20 74 6f 20 | 6d 61 6b 65 20 73 75 72 |node to |make sur|
|00003ed0| 65 20 77 65 20 64 69 64 | 20 73 74 61 74 28 29 20 |e we did| stat() |
|00003ee0| 6f 6e 20 74 68 65 20 73 | 61 6d 65 20 66 69 6c 65 |on the s|ame file|
|00003ef0| 20 77 65 20 6f 70 65 6e | 65 64 2e 0d 09 20 2a 20 | we open|ed... * |
|00003f00| 54 68 65 6e 20 77 65 20 | 6a 75 73 74 20 68 61 76 |Then we |just hav|
|00003f10| 65 20 74 6f 20 6d 61 6b | 65 20 73 75 72 65 20 68 |e to mak|e sure h|
|00003f20| 65 20 6f 72 20 73 68 65 | 20 63 61 6e 20 65 78 65 |e or she| can exe|
|00003f30| 63 75 74 65 20 69 74 2e | 0d 09 20 2a 2f 0d 09 7b |cute it.|.. */..{|
|00003f40| 0d 09 20 20 20 20 73 74 | 72 75 63 74 20 73 74 61 |.. st|ruct sta|
|00003f50| 74 20 74 6d 70 73 74 61 | 74 62 75 66 3b 0d 0d 09 |t tmpsta|tbuf;...|
|00003f60| 20 20 20 20 69 66 20 28 | 73 65 74 72 65 75 69 64 | if (|setreuid|
|00003f70| 28 65 75 69 64 2c 75 69 | 64 29 20 3c 20 30 20 7c |(euid,ui|d) < 0 ||
|00003f80| 7c 20 67 65 74 75 69 64 | 28 29 20 21 3d 20 65 75 || getuid|() != eu|
|00003f90| 69 64 20 7c 7c 20 67 65 | 74 65 75 69 64 28 29 20 |id || ge|teuid() |
|00003fa0| 21 3d 20 75 69 64 29 0d | 09 09 66 61 74 61 6c 28 |!= uid).|..fatal(|
|00003fb0| 22 43 61 6e 27 74 20 73 | 77 61 70 20 75 69 64 20 |"Can't s|wap uid |
|00003fc0| 61 6e 64 20 65 75 69 64 | 22 29 3b 09 2f 2a 20 72 |and euid|");./* r|
|00003fd0| 65 61 6c 6c 79 20 70 61 | 72 61 6e 6f 69 64 20 2a |eally pa|ranoid *|
|00003fe0| 2f 0d 09 20 20 20 20 69 | 66 20 28 73 74 61 74 28 |/.. i|f (stat(|
|00003ff0| 73 74 61 62 5f 76 61 6c | 28 63 75 72 63 6d 64 2d |stab_val|(curcmd-|
|00004000| 3e 63 5f 66 69 6c 65 73 | 74 61 62 29 2d 3e 73 74 |>c_files|tab)->st|
|00004010| 72 5f 70 74 72 2c 26 74 | 6d 70 73 74 61 74 62 75 |r_ptr,&t|mpstatbu|
|00004020| 66 29 20 3c 20 30 29 0d | 09 09 66 61 74 61 6c 28 |f) < 0).|..fatal(|
|00004030| 22 50 65 72 6d 69 73 73 | 69 6f 6e 20 64 65 6e 69 |"Permiss|ion deni|
|00004040| 65 64 22 29 3b 09 2f 2a | 20 74 65 73 74 69 6e 67 |ed");./*| testing|
|00004050| 20 66 75 6c 6c 20 70 61 | 74 68 6e 61 6d 65 20 68 | full pa|thname h|
|00004060| 65 72 65 20 2a 2f 0d 09 | 20 20 20 20 69 66 20 28 |ere */..| if (|
|00004070| 74 6d 70 73 74 61 74 62 | 75 66 2e 73 74 5f 64 65 |tmpstatb|uf.st_de|
|00004080| 76 20 21 3d 20 73 74 61 | 74 62 75 66 2e 73 74 5f |v != sta|tbuf.st_|
|00004090| 64 65 76 20 7c 7c 0d 09 | 09 74 6d 70 73 74 61 74 |dev ||..|.tmpstat|
|000040a0| 62 75 66 2e 73 74 5f 69 | 6e 6f 20 21 3d 20 73 74 |buf.st_i|no != st|
|000040b0| 61 74 62 75 66 2e 73 74 | 5f 69 6e 6f 29 20 7b 0d |atbuf.st|_ino) {.|
|000040c0| 09 09 28 76 6f 69 64 29 | 66 63 6c 6f 73 65 28 72 |..(void)|fclose(r|
|000040d0| 73 66 70 29 3b 0d 09 09 | 69 66 20 28 72 73 66 70 |sfp);...|if (rsfp|
|000040e0| 20 3d 20 6d 79 70 6f 70 | 65 6e 28 22 2f 62 69 6e | = mypop|en("/bin|
|000040f0| 2f 6d 61 69 6c 20 72 6f | 6f 74 22 2c 22 77 22 29 |/mail ro|ot","w")|
|00004100| 29 20 7b 09 2f 2a 20 68 | 65 68 2c 20 68 65 68 20 |) {./* h|eh, heh |
|00004110| 2a 2f 0d 09 09 20 20 20 | 20 66 70 72 69 6e 74 66 |*/... | fprintf|
|00004120| 28 72 73 66 70 2c 0d 22 | 55 73 65 72 20 25 64 20 |(rsfp,."|User %d |
|00004130| 74 72 69 65 64 20 74 6f | 20 72 75 6e 20 64 65 76 |tried to| run dev|
|00004140| 20 25 64 20 69 6e 6f 20 | 25 64 20 69 6e 20 70 6c | %d ino |%d in pl|
|00004150| 61 63 65 20 6f 66 20 64 | 65 76 20 25 64 20 69 6e |ace of d|ev %d in|
|00004160| 6f 20 25 64 21 5c 6e 5c | 0d 28 46 69 6c 65 6e 61 |o %d!\n\|.(Filena|
|00004170| 6d 65 20 6f 66 20 73 65 | 74 2d 69 64 20 73 63 72 |me of se|t-id scr|
|00004180| 69 70 74 20 77 61 73 20 | 25 73 2c 20 75 69 64 20 |ipt was |%s, uid |
|00004190| 25 64 20 67 69 64 20 25 | 64 2e 29 5c 6e 5c 6e 53 |%d gid %|d.)\n\nS|
|000041a0| 69 6e 63 65 72 65 6c 79 | 2c 5c 6e 70 65 72 6c 5c |incerely|,\nperl\|
|000041b0| 6e 22 2c 0d 09 09 09 75 | 69 64 2c 74 6d 70 73 74 |n",....u|id,tmpst|
|000041c0| 61 74 62 75 66 2e 73 74 | 5f 64 65 76 2c 20 74 6d |atbuf.st|_dev, tm|
|000041d0| 70 73 74 61 74 62 75 66 | 2e 73 74 5f 69 6e 6f 2c |pstatbuf|.st_ino,|
|000041e0| 0d 09 09 09 73 74 61 74 | 62 75 66 2e 73 74 5f 64 |....stat|buf.st_d|
|000041f0| 65 76 2c 20 73 74 61 74 | 62 75 66 2e 73 74 5f 69 |ev, stat|buf.st_i|
|00004200| 6e 6f 2c 0d 09 09 09 73 | 74 61 62 5f 76 61 6c 28 |no,....s|tab_val(|
|00004210| 63 75 72 63 6d 64 2d 3e | 63 5f 66 69 6c 65 73 74 |curcmd->|c_filest|
|00004220| 61 62 29 2d 3e 73 74 72 | 5f 70 74 72 2c 0d 09 09 |ab)->str|_ptr,...|
|00004230| 09 73 74 61 74 62 75 66 | 2e 73 74 5f 75 69 64 2c |.statbuf|.st_uid,|
|00004240| 20 73 74 61 74 62 75 66 | 2e 73 74 5f 67 69 64 29 | statbuf|.st_gid)|
|00004250| 3b 0d 09 09 20 20 20 20 | 28 76 6f 69 64 29 6d 79 |;... |(void)my|
|00004260| 70 63 6c 6f 73 65 28 72 | 73 66 70 29 3b 0d 09 09 |pclose(r|sfp);...|
|00004270| 7d 0d 09 09 66 61 74 61 | 6c 28 22 50 65 72 6d 69 |}...fata|l("Permi|
|00004280| 73 73 69 6f 6e 20 64 65 | 6e 69 65 64 5c 6e 22 29 |ssion de|nied\n")|
|00004290| 3b 0d 09 20 20 20 20 7d | 0d 09 20 20 20 20 69 66 |;.. }|.. if|
|000042a0| 20 28 73 65 74 72 65 75 | 69 64 28 75 69 64 2c 65 | (setreu|id(uid,e|
|000042b0| 75 69 64 29 20 3c 20 30 | 20 7c 7c 20 67 65 74 75 |uid) < 0| || getu|
|000042c0| 69 64 28 29 20 21 3d 20 | 75 69 64 20 7c 7c 20 67 |id() != |uid || g|
|000042d0| 65 74 65 75 69 64 28 29 | 20 21 3d 20 65 75 69 64 |eteuid()| != euid|
|000042e0| 29 0d 09 09 66 61 74 61 | 6c 28 22 43 61 6e 27 74 |)...fata|l("Can't|
|000042f0| 20 72 65 73 77 61 70 20 | 75 69 64 20 61 6e 64 20 | reswap |uid and |
|00004300| 65 75 69 64 22 29 3b 0d | 09 20 20 20 20 69 66 20 |euid");.|. if |
|00004310| 28 21 63 61 6e 64 6f 28 | 53 5f 49 58 55 53 52 2c |(!cando(|S_IXUSR,|
|00004320| 46 41 4c 53 45 2c 26 73 | 74 61 74 62 75 66 29 29 |FALSE,&s|tatbuf))|
|00004330| 09 09 2f 2a 20 63 61 6e | 20 72 65 61 6c 20 75 69 |../* can| real ui|
|00004340| 64 20 65 78 65 63 3f 20 | 2a 2f 0d 09 09 66 61 74 |d exec? |*/...fat|
|00004350| 61 6c 28 22 50 65 72 6d | 69 73 73 69 6f 6e 20 64 |al("Perm|ission d|
|00004360| 65 6e 69 65 64 5c 6e 22 | 29 3b 0d 09 7d 0d 23 65 |enied\n"|);..}.#e|
|00004370| 6e 64 69 66 20 2f 2a 20 | 48 41 53 5f 53 45 54 52 |ndif /* |HAS_SETR|
|00004380| 45 55 49 44 20 2a 2f 0d | 23 65 6e 64 69 66 20 2f |EUID */.|#endif /|
|00004390| 2a 20 49 41 4d 53 55 49 | 44 20 2a 2f 0d 0d 09 69 |* IAMSUI|D */...i|
|000043a0| 66 20 28 21 53 5f 49 53 | 52 45 47 28 73 74 61 74 |f (!S_IS|REG(stat|
|000043b0| 62 75 66 2e 73 74 5f 6d | 6f 64 65 29 29 0d 09 20 |buf.st_m|ode)).. |
|000043c0| 20 20 20 66 61 74 61 6c | 28 22 50 65 72 6d 69 73 | fatal|("Permis|
|000043d0| 73 69 6f 6e 20 64 65 6e | 69 65 64 22 29 3b 0d 09 |sion den|ied");..|
|000043e0| 69 66 20 28 73 74 61 74 | 62 75 66 2e 73 74 5f 6d |if (stat|buf.st_m|
|000043f0| 6f 64 65 20 26 20 53 5f | 49 57 4f 54 48 29 0d 09 |ode & S_|IWOTH)..|
|00004400| 20 20 20 20 66 61 74 61 | 6c 28 22 53 65 74 75 69 | fata|l("Setui|
|00004410| 64 2f 67 69 64 20 73 63 | 72 69 70 74 20 69 73 20 |d/gid sc|ript is |
|00004420| 77 72 69 74 61 62 6c 65 | 20 62 79 20 77 6f 72 6c |writable| by worl|
|00004430| 64 22 29 3b 0d 09 64 6f | 73 77 69 74 63 68 65 73 |d");..do|switches|
|00004440| 20 3d 20 46 41 4c 53 45 | 3b 09 09 2f 2a 20 2d 73 | = FALSE|;../* -s|
|00004450| 20 69 73 20 69 6e 73 65 | 63 75 72 65 20 69 6e 20 | is inse|cure in |
|00004460| 73 75 69 64 20 2a 2f 0d | 09 63 75 72 63 6d 64 2d |suid */.|.curcmd-|
|00004470| 3e 63 5f 6c 69 6e 65 2b | 2b 3b 0d 09 69 66 20 28 |>c_line+|+;..if (|
|00004480| 66 67 65 74 73 28 74 6f | 6b 65 6e 62 75 66 2c 73 |fgets(to|kenbuf,s|
|00004490| 69 7a 65 6f 66 20 74 6f | 6b 65 6e 62 75 66 2c 20 |izeof to|kenbuf, |
|000044a0| 72 73 66 70 29 20 3d 3d | 20 4e 75 6c 6c 63 68 20 |rsfp) ==| Nullch |
|000044b0| 7c 7c 0d 09 20 20 73 74 | 72 6e 4e 45 28 74 6f 6b |||.. st|rnNE(tok|
|000044c0| 65 6e 62 75 66 2c 22 23 | 21 22 2c 32 29 20 29 09 |enbuf,"#|!",2) ).|
|000044d0| 2f 2a 20 72 65 71 75 69 | 72 65 64 20 65 76 65 6e |/* requi|red even|
|000044e0| 20 6f 6e 20 53 79 73 20 | 56 20 2a 2f 0d 09 20 20 | on Sys |V */.. |
|000044f0| 20 20 66 61 74 61 6c 28 | 22 4e 6f 20 23 21 20 6c | fatal(|"No #! l|
|00004500| 69 6e 65 22 29 3b 0d 09 | 73 20 3d 20 74 6f 6b 65 |ine");..|s = toke|
|00004510| 6e 62 75 66 2b 32 3b 0d | 09 69 66 20 28 2a 73 20 |nbuf+2;.|.if (*s |
|00004520| 3d 3d 20 27 20 27 29 20 | 73 2b 2b 3b 0d 09 77 68 |== ' ') |s++;..wh|
|00004530| 69 6c 65 20 28 21 69 73 | 53 50 41 43 45 28 2a 73 |ile (!is|SPACE(*s|
|00004540| 29 29 20 73 2b 2b 3b 0d | 09 69 66 20 28 73 74 72 |)) s++;.|.if (str|
|00004550| 6e 4e 45 28 73 2d 34 2c | 22 70 65 72 6c 22 2c 34 |nNE(s-4,|"perl",4|
|00004560| 29 20 26 26 20 73 74 72 | 6e 4e 45 28 73 2d 39 2c |) && str|nNE(s-9,|
|00004570| 22 70 65 72 6c 22 2c 34 | 29 29 20 20 2f 2a 20 73 |"perl",4|)) /* s|
|00004580| 61 6e 69 74 79 20 63 68 | 65 63 6b 20 2a 2f 0d 09 |anity ch|eck */..|
|00004590| 20 20 20 20 66 61 74 61 | 6c 28 22 4e 6f 74 20 61 | fata|l("Not a|
|000045a0| 20 70 65 72 6c 20 73 63 | 72 69 70 74 22 29 3b 0d | perl sc|ript");.|
|000045b0| 09 77 68 69 6c 65 20 28 | 2a 73 20 3d 3d 20 27 20 |.while (|*s == ' |
|000045c0| 27 20 7c 7c 20 2a 73 20 | 3d 3d 20 27 5c 74 27 29 |' || *s |== '\t')|
|000045d0| 20 73 2b 2b 3b 0d 09 2f | 2a 0d 09 20 2a 20 23 21 | s++;../|*.. * #!|
|000045e0| 20 61 72 67 20 6d 75 73 | 74 20 62 65 20 77 68 61 | arg mus|t be wha|
|000045f0| 74 20 77 65 20 73 61 77 | 20 61 62 6f 76 65 2e 20 |t we saw| above. |
|00004600| 20 54 68 65 79 20 63 61 | 6e 20 69 6e 76 6f 6b 65 | They ca|n invoke|
|00004610| 20 69 74 20 62 79 0d 09 | 20 2a 20 6d 65 6e 74 69 | it by..| * menti|
|00004620| 6f 6e 69 6e 67 20 73 75 | 69 64 70 65 72 6c 20 65 |oning su|idperl e|
|00004630| 78 70 6c 69 63 69 74 6c | 79 2c 20 62 75 74 20 74 |xplicitl|y, but t|
|00004640| 68 65 79 20 6d 61 79 20 | 6e 6f 74 20 61 64 64 20 |hey may |not add |
|00004650| 61 6e 79 20 73 74 72 61 | 6e 67 65 0d 09 20 2a 20 |any stra|nge.. * |
|00004660| 61 72 67 75 6d 65 6e 74 | 73 20 62 65 79 6f 6e 64 |argument|s beyond|
|00004670| 20 77 68 61 74 20 23 21 | 20 73 61 79 73 20 69 66 | what #!| says if|
|00004680| 20 74 68 65 79 20 64 6f | 20 69 6e 76 6f 6b 65 20 | they do| invoke |
|00004690| 73 75 69 64 70 65 72 6c | 20 74 68 61 74 20 77 61 |suidperl| that wa|
|000046a0| 79 2e 0d 09 20 2a 2f 0d | 09 6c 65 6e 20 3d 20 73 |y... */.|.len = s|
|000046b0| 74 72 6c 65 6e 28 76 61 | 6c 69 64 61 72 67 29 3b |trlen(va|lidarg);|
|000046c0| 0d 09 69 66 20 28 73 74 | 72 45 51 28 76 61 6c 69 |..if (st|rEQ(vali|
|000046d0| 64 61 72 67 2c 22 20 50 | 48 4f 4f 45 59 20 22 29 |darg," P|HOOEY ")|
|000046e0| 20 7c 7c 0d 09 20 20 20 | 20 73 74 72 6e 4e 45 28 | ||.. | strnNE(|
|000046f0| 73 2c 76 61 6c 69 64 61 | 72 67 2c 6c 65 6e 29 20 |s,valida|rg,len) |
|00004700| 7c 7c 20 21 69 73 53 50 | 41 43 45 28 73 5b 6c 65 ||| !isSP|ACE(s[le|
|00004710| 6e 5d 29 29 0d 09 20 20 | 20 20 66 61 74 61 6c 28 |n])).. | fatal(|
|00004720| 22 41 72 67 73 20 6d 75 | 73 74 20 6d 61 74 63 68 |"Args mu|st match|
|00004730| 20 23 21 20 6c 69 6e 65 | 22 29 3b 0d 0d 23 69 66 | #! line|");..#if|
|00004740| 6e 64 65 66 20 49 41 4d | 53 55 49 44 0d 09 69 66 |ndef IAM|SUID..if|
|00004750| 20 28 65 75 69 64 20 21 | 3d 20 75 69 64 20 26 26 | (euid !|= uid &&|
|00004760| 20 28 73 74 61 74 62 75 | 66 2e 73 74 5f 6d 6f 64 | (statbu|f.st_mod|
|00004770| 65 20 26 20 53 5f 49 53 | 55 49 44 29 20 26 26 0d |e & S_IS|UID) &&.|
|00004780| 09 20 20 20 20 65 75 69 | 64 20 3d 3d 20 73 74 61 |. eui|d == sta|
|00004790| 74 62 75 66 2e 73 74 5f | 75 69 64 29 0d 09 20 20 |tbuf.st_|uid).. |
|000047a0| 20 20 69 66 20 28 21 64 | 6f 5f 75 6e 64 75 6d 70 | if (!d|o_undump|
|000047b0| 29 0d 09 09 66 61 74 61 | 6c 28 22 59 4f 55 20 48 |)...fata|l("YOU H|
|000047c0| 41 56 45 4e 27 54 20 44 | 49 53 41 42 4c 45 44 20 |AVEN'T D|ISABLED |
|000047d0| 53 45 54 2d 49 44 20 53 | 43 52 49 50 54 53 20 49 |SET-ID S|CRIPTS I|
|000047e0| 4e 20 54 48 45 20 4b 45 | 52 4e 45 4c 20 59 45 54 |N THE KE|RNEL YET|
|000047f0| 21 5c 6e 5c 0d 46 49 58 | 20 59 4f 55 52 20 4b 45 |!\n\.FIX| YOUR KE|
|00004800| 52 4e 45 4c 2c 20 50 55 | 54 20 41 20 43 20 57 52 |RNEL, PU|T A C WR|
|00004810| 41 50 50 45 52 20 41 52 | 4f 55 4e 44 20 54 48 49 |APPER AR|OUND THI|
|00004820| 53 20 53 43 52 49 50 54 | 2c 20 4f 52 20 55 53 45 |S SCRIPT|, OR USE|
|00004830| 20 2d 75 20 41 4e 44 20 | 55 4e 44 55 4d 50 21 5c | -u AND |UNDUMP!\|
|00004840| 6e 22 29 3b 0d 23 65 6e | 64 69 66 20 2f 2a 20 49 |n");.#en|dif /* I|
|00004850| 41 4d 53 55 49 44 20 2a | 2f 0d 0d 09 69 66 20 28 |AMSUID *|/...if (|
|00004860| 65 75 69 64 29 20 7b 09 | 2f 2a 20 6f 6f 70 73 2c |euid) {.|/* oops,|
|00004870| 20 77 65 27 72 65 20 6e | 6f 74 20 74 68 65 20 73 | we're n|ot the s|
|00004880| 65 74 75 69 64 20 72 6f | 6f 74 20 70 65 72 6c 20 |etuid ro|ot perl |
|00004890| 2a 2f 0d 09 20 20 20 20 | 28 76 6f 69 64 29 66 63 |*/.. |(void)fc|
|000048a0| 6c 6f 73 65 28 72 73 66 | 70 29 3b 0d 23 69 66 6e |lose(rsf|p);.#ifn|
|000048b0| 64 65 66 20 49 41 4d 53 | 55 49 44 0d 09 20 20 20 |def IAMS|UID.. |
|000048c0| 20 28 76 6f 69 64 29 73 | 70 72 69 6e 74 66 28 62 | (void)s|printf(b|
|000048d0| 75 66 2c 20 22 25 73 2f | 73 70 65 72 6c 25 73 22 |uf, "%s/|sperl%s"|
|000048e0| 2c 20 42 49 4e 2c 20 70 | 61 74 63 68 6c 65 76 65 |, BIN, p|atchleve|
|000048f0| 6c 29 3b 0d 09 20 20 20 | 20 65 78 65 63 76 28 62 |l);.. | execv(b|
|00004900| 75 66 2c 20 6f 72 69 67 | 61 72 67 76 29 3b 09 2f |uf, orig|argv);./|
|00004910| 2a 20 74 72 79 20 61 67 | 61 69 6e 20 2a 2f 0d 23 |* try ag|ain */.#|
|00004920| 65 6e 64 69 66 0d 09 20 | 20 20 20 66 61 74 61 6c |endif.. | fatal|
|00004930| 28 22 43 61 6e 27 74 20 | 64 6f 20 73 65 74 75 69 |("Can't |do setui|
|00004940| 64 5c 6e 22 29 3b 0d 09 | 7d 0d 0d 09 69 66 20 28 |d\n");..|}...if (|
|00004950| 73 74 61 74 62 75 66 2e | 73 74 5f 6d 6f 64 65 20 |statbuf.|st_mode |
|00004960| 26 20 53 5f 49 53 47 49 | 44 20 26 26 20 73 74 61 |& S_ISGI|D && sta|
|00004970| 74 62 75 66 2e 73 74 5f | 67 69 64 20 21 3d 20 65 |tbuf.st_|gid != e|
|00004980| 67 69 64 29 20 7b 0d 23 | 69 66 64 65 66 20 48 41 |gid) {.#|ifdef HA|
|00004990| 53 5f 53 45 54 45 47 49 | 44 0d 09 20 20 20 20 28 |S_SETEGI|D.. (|
|000049a0| 76 6f 69 64 29 73 65 74 | 65 67 69 64 28 73 74 61 |void)set|egid(sta|
|000049b0| 74 62 75 66 2e 73 74 5f | 67 69 64 29 3b 0d 23 65 |tbuf.st_|gid);.#e|
|000049c0| 6c 73 65 0d 23 69 66 64 | 65 66 20 48 41 53 5f 53 |lse.#ifd|ef HAS_S|
|000049d0| 45 54 52 45 47 49 44 0d | 09 20 20 20 20 28 76 6f |ETREGID.|. (vo|
|000049e0| 69 64 29 73 65 74 72 65 | 67 69 64 28 28 47 49 44 |id)setre|gid((GID|
|000049f0| 54 59 50 45 29 2d 31 2c | 73 74 61 74 62 75 66 2e |TYPE)-1,|statbuf.|
|00004a00| 73 74 5f 67 69 64 29 3b | 0d 23 65 6c 73 65 0d 09 |st_gid);|.#else..|
|00004a10| 20 20 20 20 73 65 74 67 | 69 64 28 73 74 61 74 62 | setg|id(statb|
|00004a20| 75 66 2e 73 74 5f 67 69 | 64 29 3b 0d 23 65 6e 64 |uf.st_gi|d);.#end|
|00004a30| 69 66 0d 23 65 6e 64 69 | 66 0d 09 20 20 20 20 69 |if.#endi|f.. i|
|00004a40| 66 20 28 67 65 74 65 67 | 69 64 28 29 20 21 3d 20 |f (geteg|id() != |
|00004a50| 73 74 61 74 62 75 66 2e | 73 74 5f 67 69 64 29 0d |statbuf.|st_gid).|
|00004a60| 09 09 66 61 74 61 6c 28 | 22 43 61 6e 27 74 20 64 |..fatal(|"Can't d|
|00004a70| 6f 20 73 65 74 65 67 69 | 64 21 5c 6e 22 29 3b 0d |o setegi|d!\n");.|
|00004a80| 09 7d 0d 09 69 66 20 28 | 73 74 61 74 62 75 66 2e |.}..if (|statbuf.|
|00004a90| 73 74 5f 6d 6f 64 65 20 | 26 20 53 5f 49 53 55 49 |st_mode |& S_ISUI|
|00004aa0| 44 29 20 7b 0d 09 20 20 | 20 20 69 66 20 28 73 74 |D) {.. | if (st|
|00004ab0| 61 74 62 75 66 2e 73 74 | 5f 75 69 64 20 21 3d 20 |atbuf.st|_uid != |
|00004ac0| 65 75 69 64 29 0d 23 69 | 66 64 65 66 20 48 41 53 |euid).#i|fdef HAS|
|00004ad0| 5f 53 45 54 45 55 49 44 | 0d 09 09 28 76 6f 69 64 |_SETEUID|...(void|
|00004ae0| 29 73 65 74 65 75 69 64 | 28 73 74 61 74 62 75 66 |)seteuid|(statbuf|
|00004af0| 2e 73 74 5f 75 69 64 29 | 3b 09 2f 2a 20 61 6c 6c |.st_uid)|;./* all|
|00004b00| 20 74 68 61 74 20 66 6f | 72 20 74 68 69 73 20 2a | that fo|r this *|
|00004b10| 2f 0d 23 65 6c 73 65 0d | 23 69 66 64 65 66 20 48 |/.#else.|#ifdef H|
|00004b20| 41 53 5f 53 45 54 52 45 | 55 49 44 0d 09 09 28 76 |AS_SETRE|UID...(v|
|00004b30| 6f 69 64 29 73 65 74 72 | 65 75 69 64 28 28 55 49 |oid)setr|euid((UI|
|00004b40| 44 54 59 50 45 29 2d 31 | 2c 73 74 61 74 62 75 66 |DTYPE)-1|,statbuf|
|00004b50| 2e 73 74 5f 75 69 64 29 | 3b 0d 23 65 6c 73 65 0d |.st_uid)|;.#else.|
|00004b60| 09 09 73 65 74 75 69 64 | 28 73 74 61 74 62 75 66 |..setuid|(statbuf|
|00004b70| 2e 73 74 5f 75 69 64 29 | 3b 0d 23 65 6e 64 69 66 |.st_uid)|;.#endif|
|00004b80| 0d 23 65 6e 64 69 66 0d | 09 20 20 20 20 69 66 20 |.#endif.|. if |
|00004b90| 28 67 65 74 65 75 69 64 | 28 29 20 21 3d 20 73 74 |(geteuid|() != st|
|00004ba0| 61 74 62 75 66 2e 73 74 | 5f 75 69 64 29 0d 09 09 |atbuf.st|_uid)...|
|00004bb0| 66 61 74 61 6c 28 22 43 | 61 6e 27 74 20 64 6f 20 |fatal("C|an't do |
|00004bc0| 73 65 74 65 75 69 64 21 | 5c 6e 22 29 3b 0d 09 7d |seteuid!|\n");..}|
|00004bd0| 0d 09 65 6c 73 65 20 69 | 66 20 28 75 69 64 29 20 |..else i|f (uid) |
|00004be0| 7b 09 09 09 2f 2a 20 6f | 6f 70 73 2c 20 6d 75 73 |{.../* o|ops, mus|
|00004bf0| 74 6e 27 74 20 72 75 6e | 20 61 73 20 72 6f 6f 74 |tn't run| as root|
|00004c00| 20 2a 2f 0d 23 69 66 64 | 65 66 20 48 41 53 5f 53 | */.#ifd|ef HAS_S|
|00004c10| 45 54 45 55 49 44 0d 09 | 20 20 20 20 28 76 6f 69 |ETEUID..| (voi|
|00004c20| 64 29 73 65 74 65 75 69 | 64 28 28 55 49 44 54 59 |d)seteui|d((UIDTY|
|00004c30| 50 45 29 75 69 64 29 3b | 0d 23 65 6c 73 65 0d 23 |PE)uid);|.#else.#|
|00004c40| 69 66 64 65 66 20 48 41 | 53 5f 53 45 54 52 45 55 |ifdef HA|S_SETREU|
|00004c50| 49 44 0d 09 20 20 20 20 | 28 76 6f 69 64 29 73 65 |ID.. |(void)se|
|00004c60| 74 72 65 75 69 64 28 28 | 55 49 44 54 59 50 45 29 |treuid((|UIDTYPE)|
|00004c70| 2d 31 2c 28 55 49 44 54 | 59 50 45 29 75 69 64 29 |-1,(UIDT|YPE)uid)|
|00004c80| 3b 0d 23 65 6c 73 65 0d | 09 20 20 20 20 73 65 74 |;.#else.|. set|
|00004c90| 75 69 64 28 28 55 49 44 | 54 59 50 45 29 75 69 64 |uid((UID|TYPE)uid|
|00004ca0| 29 3b 0d 23 65 6e 64 69 | 66 0d 23 65 6e 64 69 66 |);.#endi|f.#endif|
|00004cb0| 0d 09 20 20 20 20 69 66 | 20 28 67 65 74 65 75 69 |.. if| (geteui|
|00004cc0| 64 28 29 20 21 3d 20 75 | 69 64 29 0d 09 09 66 61 |d() != u|id)...fa|
|00004cd0| 74 61 6c 28 22 43 61 6e | 27 74 20 64 6f 20 73 65 |tal("Can|'t do se|
|00004ce0| 74 65 75 69 64 21 5c 6e | 22 29 3b 0d 09 7d 0d 09 |teuid!\n|");..}..|
|00004cf0| 75 69 64 20 3d 20 28 69 | 6e 74 29 67 65 74 75 69 |uid = (i|nt)getui|
|00004d00| 64 28 29 3b 0d 09 65 75 | 69 64 20 3d 20 28 69 6e |d();..eu|id = (in|
|00004d10| 74 29 67 65 74 65 75 69 | 64 28 29 3b 0d 09 67 69 |t)geteui|d();..gi|
|00004d20| 64 20 3d 20 28 69 6e 74 | 29 67 65 74 67 69 64 28 |d = (int|)getgid(|
|00004d30| 29 3b 0d 09 65 67 69 64 | 20 3d 20 28 69 6e 74 29 |);..egid| = (int)|
|00004d40| 67 65 74 65 67 69 64 28 | 29 3b 0d 09 69 66 20 28 |getegid(|);..if (|
|00004d50| 21 63 61 6e 64 6f 28 53 | 5f 49 58 55 53 52 2c 54 |!cando(S|_IXUSR,T|
|00004d60| 52 55 45 2c 26 73 74 61 | 74 62 75 66 29 29 0d 09 |RUE,&sta|tbuf))..|
|00004d70| 20 20 20 20 66 61 74 61 | 6c 28 22 50 65 72 6d 69 | fata|l("Permi|
|00004d80| 73 73 69 6f 6e 20 64 65 | 6e 69 65 64 5c 6e 22 29 |ssion de|nied\n")|
|00004d90| 3b 09 2f 2a 20 74 68 65 | 79 20 63 61 6e 27 74 20 |;./* the|y can't |
|00004da0| 64 6f 20 74 68 69 73 20 | 2a 2f 0d 20 20 20 20 7d |do this |*/. }|
|00004db0| 0d 23 69 66 64 65 66 20 | 49 41 4d 53 55 49 44 0d |.#ifdef |IAMSUID.|
|00004dc0| 20 20 20 20 65 6c 73 65 | 20 69 66 20 28 70 72 65 | else| if (pre|
|00004dd0| 70 72 6f 63 65 73 73 29 | 0d 09 66 61 74 61 6c 28 |process)|..fatal(|
|00004de0| 22 2d 50 20 6e 6f 74 20 | 61 6c 6c 6f 77 65 64 20 |"-P not |allowed |
|00004df0| 66 6f 72 20 73 65 74 75 | 69 64 2f 73 65 74 67 69 |for setu|id/setgi|
|00004e00| 64 20 73 63 72 69 70 74 | 5c 6e 22 29 3b 0d 20 20 |d script|\n");. |
|00004e10| 20 20 65 6c 73 65 0d 09 | 66 61 74 61 6c 28 22 53 | else..|fatal("S|
|00004e20| 63 72 69 70 74 20 69 73 | 20 6e 6f 74 20 73 65 74 |cript is| not set|
|00004e30| 75 69 64 2f 73 65 74 67 | 69 64 20 69 6e 20 73 75 |uid/setg|id in su|
|00004e40| 69 64 70 65 72 6c 5c 6e | 22 29 3b 0d 23 65 6c 73 |idperl\n|");.#els|
|00004e50| 65 0d 23 69 66 6e 64 65 | 66 20 54 41 49 4e 54 09 |e.#ifnde|f TAINT.|
|00004e60| 09 2f 2a 20 77 65 20 61 | 72 65 6e 27 74 20 74 61 |./* we a|ren't ta|
|00004e70| 69 6e 74 70 65 72 6c 20 | 6f 72 20 73 75 69 64 70 |intperl |or suidp|
|00004e80| 65 72 6c 20 2a 2f 0d 20 | 20 20 20 2f 2a 20 73 63 |erl */. | /* sc|
|00004e90| 72 69 70 74 20 68 61 73 | 20 61 20 77 72 61 70 70 |ript has| a wrapp|
|00004ea0| 65 72 2d 2d 63 61 6e 27 | 74 20 72 75 6e 20 73 75 |er--can'|t run su|
|00004eb0| 69 64 70 65 72 6c 20 6f | 72 20 77 65 20 6c 6f 73 |idperl o|r we los|
|00004ec0| 65 20 65 75 69 64 20 2a | 2f 0d 20 20 20 20 65 6c |e euid *|/. el|
|00004ed0| 73 65 20 69 66 20 28 65 | 75 69 64 20 21 3d 20 75 |se if (e|uid != u|
|00004ee0| 69 64 20 7c 7c 20 65 67 | 69 64 20 21 3d 20 67 69 |id || eg|id != gi|
|00004ef0| 64 29 20 7b 0d 09 28 76 | 6f 69 64 29 66 63 6c 6f |d) {..(v|oid)fclo|
|00004f00| 73 65 28 72 73 66 70 29 | 3b 0d 09 28 76 6f 69 64 |se(rsfp)|;..(void|
|00004f10| 29 73 70 72 69 6e 74 66 | 28 62 75 66 2c 20 22 25 |)sprintf|(buf, "%|
|00004f20| 73 2f 74 70 65 72 6c 25 | 73 22 2c 20 42 49 4e 2c |s/tperl%|s", BIN,|
|00004f30| 20 70 61 74 63 68 6c 65 | 76 65 6c 29 3b 0d 09 65 | patchle|vel);..e|
|00004f40| 78 65 63 76 28 62 75 66 | 2c 20 6f 72 69 67 61 72 |xecv(buf|, origar|
|00004f50| 67 76 29 3b 09 2f 2a 20 | 74 72 79 20 61 67 61 69 |gv);./* |try agai|
|00004f60| 6e 20 2a 2f 0d 09 66 61 | 74 61 6c 28 22 43 61 6e |n */..fa|tal("Can|
|00004f70| 27 74 20 72 75 6e 20 73 | 65 74 75 69 64 20 73 63 |'t run s|etuid sc|
|00004f80| 72 69 70 74 20 77 69 74 | 68 20 74 61 69 6e 74 20 |ript wit|h taint |
|00004f90| 63 68 65 63 6b 73 22 29 | 3b 0d 20 20 20 20 7d 0d |checks")|;. }.|
|00004fa0| 23 65 6e 64 69 66 20 2f | 2a 20 54 41 49 4e 54 20 |#endif /|* TAINT |
|00004fb0| 2a 2f 0d 23 65 6e 64 69 | 66 20 2f 2a 20 49 41 4d |*/.#endi|f /* IAM|
|00004fc0| 53 55 49 44 20 2a 2f 0d | 23 65 6c 73 65 20 2f 2a |SUID */.|#else /*|
|00004fd0| 20 21 44 4f 53 55 49 44 | 20 2a 2f 0d 23 69 66 6e | !DOSUID| */.#ifn|
|00004fe0| 64 65 66 20 54 41 49 4e | 54 09 09 2f 2a 20 77 65 |def TAIN|T../* we|
|00004ff0| 20 61 72 65 6e 27 74 20 | 74 61 69 6e 74 70 65 72 | aren't |taintper|
|00005000| 6c 20 6f 72 20 73 75 69 | 64 70 65 72 6c 20 2a 2f |l or sui|dperl */|
|00005010| 0d 20 20 20 20 69 66 20 | 28 65 75 69 64 20 21 3d |. if |(euid !=|
|00005020| 20 75 69 64 20 7c 7c 20 | 65 67 69 64 20 21 3d 20 | uid || |egid != |
|00005030| 67 69 64 29 20 7b 09 2f | 2a 20 28 73 75 69 64 70 |gid) {./|* (suidp|
|00005040| 65 72 6c 20 64 6f 65 73 | 6e 27 74 20 65 78 69 73 |erl does|n't exis|
|00005050| 74 2c 20 69 6e 20 66 61 | 63 74 29 20 2a 2f 0d 23 |t, in fa|ct) */.#|
|00005060| 69 66 6e 64 65 66 20 53 | 45 54 55 49 44 5f 53 43 |ifndef S|ETUID_SC|
|00005070| 52 49 50 54 53 5f 41 52 | 45 5f 53 45 43 55 52 45 |RIPTS_AR|E_SECURE|
|00005080| 5f 4e 4f 57 0d 09 66 73 | 74 61 74 28 66 69 6c 65 |_NOW..fs|tat(file|
|00005090| 6e 6f 28 72 73 66 70 29 | 2c 26 73 74 61 74 62 75 |no(rsfp)|,&statbu|
|000050a0| 66 29 3b 09 2f 2a 20 6d | 61 79 20 62 65 20 65 69 |f);./* m|ay be ei|
|000050b0| 74 68 65 72 20 77 72 61 | 70 70 65 64 20 6f 72 20 |ther wra|pped or |
|000050c0| 72 65 61 6c 20 73 75 69 | 64 20 2a 2f 0d 09 69 66 |real sui|d */..if|
|000050d0| 20 28 28 65 75 69 64 20 | 21 3d 20 75 69 64 20 26 | ((euid |!= uid &|
|000050e0| 26 20 65 75 69 64 20 3d | 3d 20 73 74 61 74 62 75 |& euid =|= statbu|
|000050f0| 66 2e 73 74 5f 75 69 64 | 20 26 26 20 73 74 61 74 |f.st_uid| && stat|
|00005100| 62 75 66 2e 73 74 5f 6d | 6f 64 65 20 26 20 53 5f |buf.st_m|ode & S_|
|00005110| 49 53 55 49 44 29 0d 09 | 20 20 20 20 7c 7c 0d 09 |ISUID)..| ||..|
|00005120| 20 20 20 20 28 65 67 69 | 64 20 21 3d 20 67 69 64 | (egi|d != gid|
|00005130| 20 26 26 20 65 67 69 64 | 20 3d 3d 20 73 74 61 74 | && egid| == stat|
|00005140| 62 75 66 2e 73 74 5f 67 | 69 64 20 26 26 20 73 74 |buf.st_g|id && st|
|00005150| 61 74 62 75 66 2e 73 74 | 5f 6d 6f 64 65 20 26 20 |atbuf.st|_mode & |
|00005160| 53 5f 49 53 47 49 44 29 | 0d 09 20 20 20 29 0d 09 |S_ISGID)|.. )..|
|00005170| 20 20 20 20 69 66 20 28 | 21 64 6f 5f 75 6e 64 75 | if (|!do_undu|
|00005180| 6d 70 29 0d 09 09 66 61 | 74 61 6c 28 22 59 4f 55 |mp)...fa|tal("YOU|
|00005190| 20 48 41 56 45 4e 27 54 | 20 44 49 53 41 42 4c 45 | HAVEN'T| DISABLE|
|000051a0| 44 20 53 45 54 2d 49 44 | 20 53 43 52 49 50 54 53 |D SET-ID| SCRIPTS|
|000051b0| 20 49 4e 20 54 48 45 20 | 4b 45 52 4e 45 4c 20 59 | IN THE |KERNEL Y|
|000051c0| 45 54 21 5c 6e 5c 0d 46 | 49 58 20 59 4f 55 52 20 |ET!\n\.F|IX YOUR |
|000051d0| 4b 45 52 4e 45 4c 2c 20 | 50 55 54 20 41 20 43 20 |KERNEL, |PUT A C |
|000051e0| 57 52 41 50 50 45 52 20 | 41 52 4f 55 4e 44 20 54 |WRAPPER |AROUND T|
|000051f0| 48 49 53 20 53 43 52 49 | 50 54 2c 20 4f 52 20 55 |HIS SCRI|PT, OR U|
|00005200| 53 45 20 2d 75 20 41 4e | 44 20 55 4e 44 55 4d 50 |SE -u AN|D UNDUMP|
|00005210| 21 5c 6e 22 29 3b 0d 23 | 65 6e 64 69 66 20 2f 2a |!\n");.#|endif /*|
|00005220| 20 53 45 54 55 49 44 5f | 53 43 52 49 50 54 53 5f | SETUID_|SCRIPTS_|
|00005230| 41 52 45 5f 53 45 43 55 | 52 45 5f 4e 4f 57 20 2a |ARE_SECU|RE_NOW *|
|00005240| 2f 0d 09 2f 2a 20 6e 6f | 74 20 73 65 74 2d 69 64 |/../* no|t set-id|
|00005250| 2c 20 6d 75 73 74 20 62 | 65 20 77 72 61 70 70 65 |, must b|e wrappe|
|00005260| 64 20 2a 2f 0d 09 28 76 | 6f 69 64 29 66 63 6c 6f |d */..(v|oid)fclo|
|00005270| 73 65 28 72 73 66 70 29 | 3b 0d 09 28 76 6f 69 64 |se(rsfp)|;..(void|
|00005280| 29 73 70 72 69 6e 74 66 | 28 62 75 66 2c 20 22 25 |)sprintf|(buf, "%|
|00005290| 73 2f 74 70 65 72 6c 25 | 73 22 2c 20 42 49 4e 2c |s/tperl%|s", BIN,|
|000052a0| 20 70 61 74 63 68 6c 65 | 76 65 6c 29 3b 0d 09 65 | patchle|vel);..e|
|000052b0| 78 65 63 76 28 62 75 66 | 2c 20 6f 72 69 67 61 72 |xecv(buf|, origar|
|000052c0| 67 76 29 3b 09 2f 2a 20 | 74 72 79 20 61 67 61 69 |gv);./* |try agai|
|000052d0| 6e 20 2a 2f 0d 09 66 61 | 74 61 6c 28 22 43 61 6e |n */..fa|tal("Can|
|000052e0| 27 74 20 72 75 6e 20 73 | 65 74 75 69 64 20 73 63 |'t run s|etuid sc|
|000052f0| 72 69 70 74 20 77 69 74 | 68 20 74 61 69 6e 74 20 |ript wit|h taint |
|00005300| 63 68 65 63 6b 73 22 29 | 3b 0d 20 20 20 20 7d 0d |checks")|;. }.|
|00005310| 23 65 6e 64 69 66 20 2f | 2a 20 54 41 49 4e 54 20 |#endif /|* TAINT |
|00005320| 2a 2f 0d 23 65 6e 64 69 | 66 20 2f 2a 20 44 4f 53 |*/.#endi|f /* DOS|
|00005330| 55 49 44 20 2a 2f 0d 0d | 23 69 66 20 21 64 65 66 |UID */..|#if !def|
|00005340| 69 6e 65 64 28 49 41 4d | 53 55 49 44 29 20 26 26 |ined(IAM|SUID) &&|
|00005350| 20 21 64 65 66 69 6e 65 | 64 28 54 41 49 4e 54 29 | !define|d(TAINT)|
|00005360| 0d 0d 20 20 20 20 2f 2a | 20 73 6b 69 70 20 66 6f |.. /*| skip fo|
|00005370| 72 77 61 72 64 20 69 6e | 20 69 6e 70 75 74 20 74 |rward in| input t|
|00005380| 6f 20 74 68 65 20 72 65 | 61 6c 20 73 63 72 69 70 |o the re|al scrip|
|00005390| 74 3f 20 2a 2f 0d 0d 23 | 69 66 64 65 66 20 4d 41 |t? */..#|ifdef MA|
|000053a0| 43 5f 53 54 41 4e 44 41 | 4c 4f 4e 45 0d 20 20 20 |C_STANDA|LONE. |
|000053b0| 20 2f 2a 20 53 69 6e 63 | 65 20 74 68 65 20 4d 61 | /* Sinc|e the Ma|
|000053c0| 63 20 4f 53 20 64 6f 65 | 73 20 6e 6f 74 20 68 6f |c OS doe|s not ho|
|000053d0| 6e 6f 72 20 21 23 20 61 | 72 67 75 6d 65 6e 74 73 |nor !# a|rguments|
|000053e0| 20 66 6f 72 20 75 73 2c | 20 77 65 20 64 6f 20 69 | for us,| we do i|
|000053f0| 74 20 6f 75 72 73 65 6c | 76 65 73 20 2a 2f 0d 20 |t oursel|ves */. |
|00005400| 20 20 20 0d 20 20 20 20 | 77 68 69 6c 65 20 28 31 | . |while (1|
|00005410| 29 20 7b 0d 09 69 66 20 | 28 28 73 20 3d 20 73 74 |) {..if |((s = st|
|00005420| 72 5f 67 65 74 73 28 6c | 69 6e 65 73 74 72 2c 20 |r_gets(l|inestr, |
|00005430| 72 73 66 70 2c 20 30 29 | 29 20 3d 3d 20 4e 75 6c |rsfp, 0)|) == Nul|
|00005440| 6c 63 68 29 20 7b 0d 09 | 20 20 20 20 69 66 20 28 |lch) {..| if (|
|00005450| 64 6f 65 78 74 72 61 63 | 74 29 20 7b 0d 09 20 20 |doextrac|t) {.. |
|00005460| 20 20 09 44 69 61 6c 6f | 67 50 74 72 20 20 20 20 | .Dialo|gPtr |
|00005470| 64 6c 67 3b 0d 09 09 63 | 68 61 72 09 20 20 20 20 |dlg;...c|har. |
|00005480| 20 66 69 6c 65 5b 32 35 | 36 5d 3b 0d 09 09 0d 09 | file[25|6];.....|
|00005490| 09 73 74 72 63 70 79 28 | 66 69 6c 65 2b 31 2c 20 |.strcpy(|file+1, |
|000054a0| 4d 50 57 46 69 6c 65 4e | 61 6d 65 28 6f 72 69 67 |MPWFileN|ame(orig|
|000054b0| 66 69 6c 65 6e 61 6d 65 | 29 29 3b 0d 09 09 66 69 |filename|));...fi|
|000054c0| 6c 65 5b 30 5d 20 3d 20 | 73 74 72 6c 65 6e 28 66 |le[0] = |strlen(f|
|000054d0| 69 6c 65 2b 31 29 3b 0d | 09 09 50 61 72 61 6d 54 |ile+1);.|..ParamT|
|000054e0| 65 78 74 28 28 53 74 72 | 69 6e 67 50 74 72 29 20 |ext((Str|ingPtr) |
|000054f0| 66 69 6c 65 2c 20 22 5c | 70 22 2c 20 22 5c 70 22 |file, "\|p", "\p"|
|00005500| 2c 20 22 5c 70 22 29 3b | 0d 09 09 0d 09 09 69 66 |, "\p");|......if|
|00005510| 20 28 41 6c 65 72 74 28 | 32 37 30 2c 20 28 4d 6f | (Alert(|270, (Mo|
|00005520| 64 61 6c 46 69 6c 74 65 | 72 50 72 6f 63 50 74 72 |dalFilte|rProcPtr|
|00005530| 29 20 6e 69 6c 29 20 3d | 3d 20 32 29 0d 09 09 20 |) nil) =|= 2)... |
|00005540| 20 20 20 66 61 74 61 6c | 28 22 55 73 65 72 20 61 | fatal|("User a|
|00005550| 62 6f 72 74 65 64 20 73 | 63 72 69 70 74 5c 6e 22 |borted s|cript\n"|
|00005560| 29 3b 0d 09 09 65 6c 73 | 65 0d 09 09 20 20 20 20 |);...els|e... |
|00005570| 64 6f 65 78 74 72 61 63 | 74 20 3d 20 46 41 4c 53 |doextrac|t = FALS|
|00005580| 45 3b 0d 09 20 20 20 20 | 7d 09 20 20 20 20 09 0d |E;.. |}. ..|
|00005590| 09 09 0d 09 20 20 20 20 | 2f 2a 20 50 61 74 65 72 |.... |/* Pater|
|000055a0| 20 70 65 63 63 61 76 69 | 2c 20 66 69 6c 65 20 64 | peccavi|, file d|
|000055b0| 6f 65 73 20 6e 6f 74 20 | 68 61 76 65 20 23 21 20 |oes not |have #! |
|000055c0| 2a 2f 0d 09 20 20 20 20 | 72 65 77 69 6e 64 28 72 |*/.. |rewind(r|
|000055d0| 73 66 70 29 3b 0d 09 20 | 20 20 20 63 75 72 63 6d |sfp);.. | curcm|
|000055e0| 64 2d 3e 63 5f 6c 69 6e | 65 20 3d 20 30 3b 0d 09 |d->c_lin|e = 0;..|
|000055f0| 20 20 20 20 65 78 74 72 | 61 63 74 5f 6f 66 66 73 | extr|act_offs|
|00005600| 65 74 20 3d 20 30 3b 0d | 09 20 20 20 20 0d 09 20 |et = 0;.|. .. |
|00005610| 20 20 20 62 72 65 61 6b | 3b 0d 09 7d 0d 09 69 66 | break|;..}..if|
|00005620| 20 28 2a 73 20 3d 3d 20 | 27 23 27 20 26 26 20 73 | (*s == |'#' && s|
|00005630| 5b 31 5d 20 3d 3d 20 27 | 21 27 20 26 26 20 69 6e |[1] == '|!' && in|
|00005640| 73 74 72 28 73 2c 22 70 | 65 72 6c 22 29 29 20 7b |str(s,"p|erl")) {|
|00005650| 0d 09 20 20 20 20 75 6e | 67 65 74 63 28 27 5c 6e |.. un|getc('\n|
|00005660| 27 2c 72 73 66 70 29 3b | 09 09 2f 2a 20 74 6f 20 |',rsfp);|../* to |
|00005670| 6b 65 65 70 20 6c 69 6e | 65 20 63 6f 75 6e 74 20 |keep lin|e count |
|00005680| 72 69 67 68 74 20 2a 2f | 0d 09 20 20 20 20 64 6f |right */|.. do|
|00005690| 65 78 74 72 61 63 74 20 | 3d 20 46 41 4c 53 45 3b |extract |= FALSE;|
|000056a0| 0d 09 20 20 20 20 69 66 | 20 28 73 20 3d 20 69 6e |.. if| (s = in|
|000056b0| 73 74 72 28 73 2c 22 70 | 65 72 6c 20 2d 22 29 29 |str(s,"p|erl -"))|
|000056c0| 20 7b 0d 09 09 73 20 2b | 3d 20 36 3b 0d 2f 2a 20 | {...s +|= 6;./* |
|000056d0| 41 20 74 72 75 6c 79 20 | 68 6f 72 72 69 62 6c 65 |A truly |horrible|
|000056e0| 20 68 61 63 6b 2c 20 62 | 75 74 20 61 6e 79 62 6f | hack, b|ut anybo|
|000056f0| 64 79 20 77 68 6f 20 73 | 70 65 63 69 66 69 65 73 |dy who s|pecifies|
|00005700| 20 2d 64 20 69 6e 20 74 | 68 65 20 23 21 20 6c 69 | -d in t|he #! li|
|00005710| 6e 65 20 64 65 73 65 72 | 76 65 73 0d 20 20 20 74 |ne deser|ves. t|
|00005720| 68 69 73 0d 2a 2f 0d 09 | 09 66 6f 72 20 28 3b 73 |his.*/..|.for (;s|
|00005730| 3b 20 73 20 3d 20 6d 6f | 72 65 73 77 69 74 63 68 |; s = mo|reswitch|
|00005740| 65 73 28 73 29 29 20 0d | 09 09 20 20 20 20 69 66 |es(s)) .|.. if|
|00005750| 20 28 2a 73 20 3d 3d 20 | 27 64 27 20 26 26 20 21 | (*s == |'d' && !|
|00005760| 70 65 72 6c 64 62 29 0d | 09 09 09 28 76 6f 69 64 |perldb).|...(void|
|00005770| 29 68 61 64 64 28 61 61 | 64 64 28 63 75 72 63 6d |)hadd(aa|dd(curcm|
|00005780| 64 2d 3e 63 5f 66 69 6c | 65 73 74 61 62 29 29 3b |d->c_fil|estab));|
|00005790| 0d 09 20 20 20 20 7d 0d | 09 20 20 20 20 62 72 65 |.. }.|. bre|
|000057a0| 61 6b 3b 0d 09 7d 0d 09 | 65 78 74 72 61 63 74 5f |ak;..}..|extract_|
|000057b0| 6f 66 66 73 65 74 2b 2b | 3b 0d 20 20 20 20 7d 20 |offset++|;. } |
|000057c0| 0d 23 65 6c 73 65 0d 20 | 20 20 20 77 68 69 6c 65 |.#else. | while|
|000057d0| 20 28 64 6f 65 78 74 72 | 61 63 74 29 20 7b 0d 09 | (doextr|act) {..|
|000057e0| 69 66 20 28 28 73 20 3d | 20 73 74 72 5f 67 65 74 |if ((s =| str_get|
|000057f0| 73 28 6c 69 6e 65 73 74 | 72 2c 20 72 73 66 70 2c |s(linest|r, rsfp,|
|00005800| 20 30 29 29 20 3d 3d 20 | 4e 75 6c 6c 63 68 29 0d | 0)) == |Nullch).|
|00005810| 09 20 20 20 20 66 61 74 | 61 6c 28 22 4e 6f 20 50 |. fat|al("No P|
|00005820| 65 72 6c 20 73 63 72 69 | 70 74 20 66 6f 75 6e 64 |erl scri|pt found|
|00005830| 20 69 6e 20 69 6e 70 75 | 74 5c 6e 22 29 3b 0d 09 | in inpu|t\n");..|
|00005840| 69 66 20 28 2a 73 20 3d | 3d 20 27 23 27 20 26 26 |if (*s =|= '#' &&|
|00005850| 20 73 5b 31 5d 20 3d 3d | 20 27 21 27 20 26 26 20 | s[1] ==| '!' && |
|00005860| 69 6e 73 74 72 28 73 2c | 22 70 65 72 6c 22 29 29 |instr(s,|"perl"))|
|00005870| 20 7b 0d 09 20 20 20 20 | 75 6e 67 65 74 63 28 27 | {.. |ungetc('|
|00005880| 5c 6e 27 2c 72 73 66 70 | 29 3b 09 09 2f 2a 20 74 |\n',rsfp|);../* t|
|00005890| 6f 20 6b 65 65 70 20 6c | 69 6e 65 20 63 6f 75 6e |o keep l|ine coun|
|000058a0| 74 20 72 69 67 68 74 20 | 2a 2f 0d 09 20 20 20 20 |t right |*/.. |
|000058b0| 64 6f 65 78 74 72 61 63 | 74 20 3d 20 46 41 4c 53 |doextrac|t = FALS|
|000058c0| 45 3b 0d 09 20 20 20 20 | 69 66 20 28 73 20 3d 20 |E;.. |if (s = |
|000058d0| 69 6e 73 74 72 28 73 2c | 22 70 65 72 6c 20 2d 22 |instr(s,|"perl -"|
|000058e0| 29 29 20 7b 0d 09 09 73 | 20 2b 3d 20 36 3b 0d 09 |)) {...s| += 6;..|
|000058f0| 09 2f 2a 53 55 50 50 52 | 45 53 53 20 35 33 30 2a |./*SUPPR|ESS 530*|
|00005900| 2f 0d 23 69 66 64 65 66 | 20 6d 61 63 69 6e 74 6f |/.#ifdef| macinto|
|00005910| 73 68 0d 2f 2a 20 41 20 | 74 72 75 6c 79 20 68 6f |sh./* A |truly ho|
|00005920| 72 72 69 62 6c 65 20 68 | 61 63 6b 2c 20 62 75 74 |rrible h|ack, but|
|00005930| 20 61 6e 79 62 6f 64 79 | 20 77 68 6f 20 73 70 65 | anybody| who spe|
|00005940| 63 69 66 69 65 73 20 2d | 64 20 69 6e 20 74 68 65 |cifies -|d in the|
|00005950| 20 23 21 20 6c 69 6e 65 | 20 64 65 73 65 72 76 65 | #! line| deserve|
|00005960| 73 0d 20 20 20 74 68 69 | 73 0d 2a 2f 0d 09 09 66 |s. thi|s.*/...f|
|00005970| 6f 72 20 28 3b 73 3b 20 | 73 20 3d 20 6d 6f 72 65 |or (;s; |s = more|
|00005980| 73 77 69 74 63 68 65 73 | 28 73 29 29 20 0d 09 09 |switches|(s)) ...|
|00005990| 20 20 20 20 69 66 20 28 | 2a 73 20 3d 3d 20 27 64 | if (|*s == 'd|
|000059a0| 27 20 26 26 20 21 70 65 | 72 6c 64 62 29 0d 09 09 |' && !pe|rldb)...|
|000059b0| 09 28 76 6f 69 64 29 68 | 61 64 64 28 61 61 64 64 |.(void)h|add(aadd|
|000059c0| 28 63 75 72 63 6d 64 2d | 3e 63 5f 66 69 6c 65 73 |(curcmd-|>c_files|
|000059d0| 74 61 62 29 29 3b 0d 23 | 65 6c 73 65 0d 09 09 77 |tab));.#|else...w|
|000059e0| 68 69 6c 65 20 28 73 20 | 3d 20 6d 6f 72 65 73 77 |hile (s |= moresw|
|000059f0| 69 74 63 68 65 73 28 73 | 29 29 20 3b 0d 23 65 6e |itches(s|)) ;.#en|
|00005a00| 64 69 66 0d 09 20 20 20 | 20 7d 0d 09 20 20 20 20 |dif.. | }.. |
|00005a10| 69 66 20 28 63 64 64 69 | 72 20 26 26 20 63 68 64 |if (cddi|r && chd|
|00005a20| 69 72 28 63 64 64 69 72 | 29 20 3c 20 30 29 0d 09 |ir(cddir|) < 0)..|
|00005a30| 09 66 61 74 61 6c 28 22 | 43 61 6e 27 74 20 63 68 |.fatal("|Can't ch|
|00005a40| 64 69 72 20 74 6f 20 25 | 73 22 2c 63 64 64 69 72 |dir to %|s",cddir|
|00005a50| 29 3b 0d 09 7d 0d 23 69 | 66 64 65 66 20 6d 61 63 |);..}.#i|fdef mac|
|00005a60| 69 6e 74 6f 73 68 0d 09 | 69 66 20 28 64 6f 65 78 |intosh..|if (doex|
|00005a70| 74 72 61 63 74 29 0d 09 | 20 20 20 20 65 78 74 72 |tract)..| extr|
|00005a80| 61 63 74 5f 6f 66 66 73 | 65 74 2b 2b 3b 0d 23 65 |act_offs|et++;.#e|
|00005a90| 6e 64 69 66 0d 20 20 20 | 20 7d 0d 23 65 6e 64 69 |ndif. | }.#endi|
|00005aa0| 66 0d 23 65 6e 64 69 66 | 20 2f 2a 20 21 64 65 66 |f.#endif| /* !def|
|00005ab0| 69 6e 65 64 28 49 41 4d | 53 55 49 44 29 20 26 26 |ined(IAM|SUID) &&|
|00005ac0| 20 21 64 65 66 69 6e 65 | 64 28 54 41 49 4e 54 29 | !define|d(TAINT)|
|00005ad0| 20 2a 2f 0d 0d 20 20 20 | 20 64 65 66 73 74 61 62 | */.. | defstab|
|00005ae0| 20 3d 20 73 74 61 62 65 | 6e 74 28 22 5f 22 2c 54 | = stabe|nt("_",T|
|00005af0| 52 55 45 29 3b 0d 0d 20 | 20 20 20 73 75 62 6e 61 |RUE);.. | subna|
|00005b00| 6d 65 20 3d 20 73 74 72 | 5f 6d 61 6b 65 28 22 6d |me = str|_make("m|
|00005b10| 61 69 6e 22 2c 34 29 3b | 0d 20 20 20 20 69 66 20 |ain",4);|. if |
|00005b20| 28 70 65 72 6c 64 62 29 | 20 7b 0d 09 64 65 62 73 |(perldb)| {..debs|
|00005b30| 74 61 73 68 20 3d 20 68 | 6e 65 77 28 30 29 3b 0d |tash = h|new(0);.|
|00005b40| 09 73 74 61 62 5f 78 68 | 61 73 68 28 73 74 61 62 |.stab_xh|ash(stab|
|00005b50| 65 6e 74 28 22 5f 44 42 | 22 2c 54 52 55 45 29 29 |ent("_DB|",TRUE))|
|00005b60| 20 3d 20 64 65 62 73 74 | 61 73 68 3b 0d 09 63 75 | = debst|ash;..cu|
|00005b70| 72 73 74 61 73 68 20 3d | 20 64 65 62 73 74 61 73 |rstash =| debstas|
|00005b80| 68 3b 0d 09 64 62 61 72 | 67 73 20 3d 20 73 74 61 |h;..dbar|gs = sta|
|00005b90| 62 5f 78 61 72 72 61 79 | 28 61 61 64 64 28 28 74 |b_xarray|(aadd((t|
|00005ba0| 6d 70 73 74 61 62 20 3d | 20 73 74 61 62 65 6e 74 |mpstab =| stabent|
|00005bb0| 28 22 61 72 67 73 22 2c | 54 52 55 45 29 29 29 29 |("args",|TRUE))))|
|00005bc0| 3b 0d 09 74 6d 70 73 74 | 61 62 2d 3e 73 74 72 5f |;..tmpst|ab->str_|
|00005bd0| 70 6f 6b 20 7c 3d 20 53 | 50 5f 4d 55 4c 54 49 3b |pok |= S|P_MULTI;|
|00005be0| 0d 09 64 62 61 72 67 73 | 2d 3e 61 72 79 5f 66 6c |..dbargs|->ary_fl|
|00005bf0| 61 67 73 20 3d 20 30 3b | 0d 09 44 42 73 74 61 62 |ags = 0;|..DBstab|
|00005c00| 20 3d 20 73 74 61 62 65 | 6e 74 28 22 44 42 22 2c | = stabe|nt("DB",|
|00005c10| 54 52 55 45 29 3b 0d 09 | 44 42 73 74 61 62 2d 3e |TRUE);..|DBstab->|
|00005c20| 73 74 72 5f 70 6f 6b 20 | 7c 3d 20 53 50 5f 4d 55 |str_pok ||= SP_MU|
|00005c30| 4c 54 49 3b 0d 09 44 42 | 6c 69 6e 65 20 3d 20 73 |LTI;..DB|line = s|
|00005c40| 74 61 62 65 6e 74 28 22 | 64 62 6c 69 6e 65 22 2c |tabent("|dbline",|
|00005c50| 54 52 55 45 29 3b 0d 09 | 44 42 6c 69 6e 65 2d 3e |TRUE);..|DBline->|
|00005c60| 73 74 72 5f 70 6f 6b 20 | 7c 3d 20 53 50 5f 4d 55 |str_pok ||= SP_MU|
|00005c70| 4c 54 49 3b 0d 09 44 42 | 73 75 62 20 3d 20 68 61 |LTI;..DB|sub = ha|
|00005c80| 64 64 28 74 6d 70 73 74 | 61 62 20 3d 20 73 74 61 |dd(tmpst|ab = sta|
|00005c90| 62 65 6e 74 28 22 73 75 | 62 22 2c 54 52 55 45 29 |bent("su|b",TRUE)|
|00005ca0| 29 3b 0d 09 74 6d 70 73 | 74 61 62 2d 3e 73 74 72 |);..tmps|tab->str|
|00005cb0| 5f 70 6f 6b 20 7c 3d 20 | 53 50 5f 4d 55 4c 54 49 |_pok |= |SP_MULTI|
|00005cc0| 3b 0d 09 44 42 73 69 6e | 67 6c 65 20 3d 20 73 74 |;..DBsin|gle = st|
|00005cd0| 61 62 5f 76 61 6c 28 28 | 74 6d 70 73 74 61 62 20 |ab_val((|tmpstab |
|00005ce0| 3d 20 73 74 61 62 65 6e | 74 28 22 73 69 6e 67 6c |= staben|t("singl|
|00005cf0| 65 22 2c 54 52 55 45 29 | 29 29 3b 0d 09 74 6d 70 |e",TRUE)|));..tmp|
|00005d00| 73 74 61 62 2d 3e 73 74 | 72 5f 70 6f 6b 20 7c 3d |stab->st|r_pok |=|
|00005d10| 20 53 50 5f 4d 55 4c 54 | 49 3b 0d 09 44 42 74 72 | SP_MULT|I;..DBtr|
|00005d20| 61 63 65 20 3d 20 73 74 | 61 62 5f 76 61 6c 28 28 |ace = st|ab_val((|
|00005d30| 74 6d 70 73 74 61 62 20 | 3d 20 73 74 61 62 65 6e |tmpstab |= staben|
|00005d40| 74 28 22 74 72 61 63 65 | 22 2c 54 52 55 45 29 29 |t("trace|",TRUE))|
|00005d50| 29 3b 0d 09 74 6d 70 73 | 74 61 62 2d 3e 73 74 72 |);..tmps|tab->str|
|00005d60| 5f 70 6f 6b 20 7c 3d 20 | 53 50 5f 4d 55 4c 54 49 |_pok |= |SP_MULTI|
|00005d70| 3b 0d 09 44 42 73 69 67 | 6e 61 6c 20 3d 20 73 74 |;..DBsig|nal = st|
|00005d80| 61 62 5f 76 61 6c 28 28 | 74 6d 70 73 74 61 62 20 |ab_val((|tmpstab |
|00005d90| 3d 20 73 74 61 62 65 6e | 74 28 22 73 69 67 6e 61 |= staben|t("signa|
|00005da0| 6c 22 2c 54 52 55 45 29 | 29 29 3b 0d 09 74 6d 70 |l",TRUE)|));..tmp|
|00005db0| 73 74 61 62 2d 3e 73 74 | 72 5f 70 6f 6b 20 7c 3d |stab->st|r_pok |=|
|00005dc0| 20 53 50 5f 4d 55 4c 54 | 49 3b 0d 09 63 75 72 73 | SP_MULT|I;..curs|
|00005dd0| 74 61 73 68 20 3d 20 64 | 65 66 73 74 61 73 68 3b |tash = d|efstash;|
|00005de0| 0d 20 20 20 20 7d 0d 0d | 20 20 20 20 2f 2a 20 69 |. }..| /* i|
|00005df0| 6e 69 74 20 74 6f 6b 65 | 6e 65 72 20 2a 2f 0d 0d |nit toke|ner */..|
|00005e00| 20 20 20 20 62 75 66 65 | 6e 64 20 3d 20 62 75 66 | bufe|nd = buf|
|00005e10| 70 74 72 20 3d 20 73 74 | 72 5f 67 65 74 28 6c 69 |ptr = st|r_get(li|
|00005e20| 6e 65 73 74 72 29 3b 0d | 0d 20 20 20 20 73 61 76 |nestr);.|. sav|
|00005e30| 65 73 74 61 63 6b 20 3d | 20 61 6e 65 77 28 4e 75 |estack =| anew(Nu|
|00005e40| 6c 6c 73 74 61 62 29 3b | 09 09 2f 2a 20 66 6f 72 |llstab);|../* for|
|00005e50| 20 73 61 76 69 6e 67 20 | 6e 6f 6e 2d 6c 6f 63 61 | saving |non-loca|
|00005e60| 6c 20 76 61 6c 75 65 73 | 20 2a 2f 0d 20 20 20 20 |l values| */. |
|00005e70| 73 74 61 63 6b 20 3d 20 | 61 6e 65 77 28 4e 75 6c |stack = |anew(Nul|
|00005e80| 6c 73 74 61 62 29 3b 09 | 09 2f 2a 20 66 6f 72 20 |lstab);.|./* for |
|00005e90| 73 61 76 69 6e 67 20 6e | 6f 6e 2d 6c 6f 63 61 6c |saving n|on-local|
|00005ea0| 20 76 61 6c 75 65 73 20 | 2a 2f 0d 20 20 20 20 73 | values |*/. s|
|00005eb0| 74 61 63 6b 2d 3e 61 72 | 79 5f 66 6c 61 67 73 20 |tack->ar|y_flags |
|00005ec0| 3d 20 30 3b 09 09 2f 2a | 20 6e 6f 74 20 61 20 72 |= 0;../*| not a r|
|00005ed0| 65 61 6c 20 61 72 72 61 | 79 20 2a 2f 0d 20 20 20 |eal arra|y */. |
|00005ee0| 20 61 66 69 6c 6c 28 73 | 74 61 63 6b 2c 36 33 29 | afill(s|tack,63)|
|00005ef0| 3b 20 61 66 69 6c 6c 28 | 73 74 61 63 6b 2c 2d 31 |; afill(|stack,-1|
|00005f00| 29 3b 09 2f 2a 20 70 72 | 65 65 78 74 65 6e 64 20 |);./* pr|eextend |
|00005f10| 73 74 61 63 6b 20 2a 2f | 0d 20 20 20 20 61 66 69 |stack */|. afi|
|00005f20| 6c 6c 28 73 61 76 65 73 | 74 61 63 6b 2c 36 33 29 |ll(saves|tack,63)|
|00005f30| 3b 20 61 66 69 6c 6c 28 | 73 61 76 65 73 74 61 63 |; afill(|savestac|
|00005f40| 6b 2c 2d 31 29 3b 0d 0d | 20 20 20 20 2f 2a 20 6e |k,-1);..| /* n|
|00005f50| 6f 77 20 70 61 72 73 65 | 20 74 68 65 20 73 63 72 |ow parse| the scr|
|00005f60| 69 70 74 20 2a 2f 0d 0d | 20 20 20 20 65 72 72 6f |ipt */..| erro|
|00005f70| 72 5f 63 6f 75 6e 74 20 | 3d 20 30 3b 0d 20 20 20 |r_count |= 0;. |
|00005f80| 20 69 66 20 28 79 79 70 | 61 72 73 65 28 29 20 7c | if (yyp|arse() ||
|00005f90| 7c 20 65 72 72 6f 72 5f | 63 6f 75 6e 74 29 20 7b || error_|count) {|
|00005fa0| 0d 09 69 66 20 28 6d 69 | 6e 75 73 5f 63 29 0d 23 |..if (mi|nus_c).#|
|00005fb0| 69 66 64 65 66 20 6d 61 | 63 69 6e 74 6f 73 68 0d |ifdef ma|cintosh.|
|00005fc0| 09 20 20 20 20 66 61 74 | 61 6c 28 22 25 73 20 68 |. fat|al("%s h|
|00005fd0| 61 64 20 63 6f 6d 70 69 | 6c 61 74 69 6f 6e 20 65 |ad compi|lation e|
|00005fe0| 72 72 6f 72 73 2e 5c 6e | 22 2c 20 4d 50 57 46 69 |rrors.\n|", MPWFi|
|00005ff0| 6c 65 4e 61 6d 65 28 6f | 72 69 67 66 69 6c 65 6e |leName(o|rigfilen|
|00006000| 61 6d 65 29 29 3b 0d 23 | 65 6c 73 65 0d 09 20 20 |ame));.#|else.. |
|00006010| 20 20 66 61 74 61 6c 28 | 22 25 73 20 68 61 64 20 | fatal(|"%s had |
|00006020| 63 6f 6d 70 69 6c 61 74 | 69 6f 6e 20 65 72 72 6f |compilat|ion erro|
|00006030| 72 73 2e 5c 6e 22 2c 20 | 6f 72 69 67 66 69 6c 65 |rs.\n", |origfile|
|00006040| 6e 61 6d 65 29 3b 0d 23 | 65 6e 64 69 66 0d 09 65 |name);.#|endif..e|
|00006050| 6c 73 65 20 7b 0d 09 20 | 20 20 20 66 61 74 61 6c |lse {.. | fatal|
|00006060| 28 22 45 78 65 63 75 74 | 69 6f 6e 20 6f 66 20 25 |("Execut|ion of %|
|00006070| 73 20 61 62 6f 72 74 65 | 64 20 64 75 65 20 74 6f |s aborte|d due to|
|00006080| 20 63 6f 6d 70 69 6c 61 | 74 69 6f 6e 20 65 72 72 | compila|tion err|
|00006090| 6f 72 73 2e 5c 6e 22 2c | 0d 23 69 66 64 65 66 20 |ors.\n",|.#ifdef |
|000060a0| 6d 61 63 69 6e 74 6f 73 | 68 0d 09 09 4d 50 57 46 |macintos|h...MPWF|
|000060b0| 69 6c 65 4e 61 6d 65 28 | 6f 72 69 67 66 69 6c 65 |ileName(|origfile|
|000060c0| 6e 61 6d 65 29 29 3b 0d | 23 65 6c 73 65 0d 09 09 |name));.|#else...|
|000060d0| 6f 72 69 67 66 69 6c 65 | 6e 61 6d 65 29 3b 0d 23 |origfile|name);.#|
|000060e0| 65 6e 64 69 66 0d 09 7d | 0d 20 20 20 20 7d 0d 0d |endif..}|. }..|
|000060f0| 20 20 20 20 4e 65 77 28 | 35 30 2c 6c 6f 6f 70 5f | New(|50,loop_|
|00006100| 73 74 61 63 6b 2c 31 32 | 38 2c 73 74 72 75 63 74 |stack,12|8,struct|
|00006110| 20 6c 6f 6f 70 29 3b 0d | 23 69 66 64 65 66 20 44 | loop);.|#ifdef D|
|00006120| 45 42 55 47 47 49 4e 47 | 0d 20 20 20 20 69 66 20 |EBUGGING|. if |
|00006130| 28 64 65 62 75 67 29 20 | 7b 0d 09 4e 65 77 28 35 |(debug) |{..New(5|
|00006140| 31 2c 64 65 62 6e 61 6d | 65 2c 31 32 38 2c 63 68 |1,debnam|e,128,ch|
|00006150| 61 72 29 3b 0d 09 4e 65 | 77 28 35 32 2c 64 65 62 |ar);..Ne|w(52,deb|
|00006160| 64 65 6c 69 6d 2c 31 32 | 38 2c 63 68 61 72 29 3b |delim,12|8,char);|
|00006170| 0d 23 69 66 64 65 66 20 | 6d 61 63 69 6e 74 6f 73 |.#ifdef |macintos|
|00006180| 68 0d 23 69 66 64 65 66 | 20 4d 41 43 5f 53 54 41 |h.#ifdef| MAC_STA|
|00006190| 4e 44 41 4c 4f 4e 45 0d | 09 70 65 72 6c 64 62 67 |NDALONE.|.perldbg|
|000061a0| 20 3d 20 66 6f 70 65 6e | 28 70 65 72 6c 64 62 67 | = fopen|(perldbg|
|000061b0| 6e 61 6d 65 2c 20 22 77 | 22 29 3b 0d 09 69 66 20 |name, "w|");..if |
|000061c0| 28 21 70 65 72 6c 64 62 | 67 29 0d 09 20 20 20 70 |(!perldb|g).. p|
|000061d0| 65 72 6c 64 62 67 20 3d | 20 73 74 64 65 72 72 3b |erldbg =| stderr;|
|000061e0| 0d 23 65 6c 73 65 0d 09 | 70 65 72 6c 64 62 67 20 |.#else..|perldbg |
|000061f0| 3d 20 73 74 64 65 72 72 | 3b 0d 23 65 6e 64 69 66 |= stderr|;.#endif|
|00006200| 0d 23 65 6e 64 69 66 0d | 20 20 20 20 7d 0d 23 65 |.#endif.| }.#e|
|00006210| 6e 64 69 66 0d 20 20 20 | 20 63 75 72 73 74 61 73 |ndif. | curstas|
|00006220| 68 20 3d 20 64 65 66 73 | 74 61 73 68 3b 0d 0d 20 |h = defs|tash;.. |
|00006230| 20 20 20 70 72 65 70 72 | 6f 63 65 73 73 20 3d 20 | prepr|ocess = |
|00006240| 46 41 4c 53 45 3b 0d 20 | 20 20 20 69 66 20 28 65 |FALSE;. | if (e|
|00006250| 5f 66 70 29 20 7b 0d 09 | 65 5f 66 70 20 3d 20 4e |_fp) {..|e_fp = N|
|00006260| 75 6c 6c 66 70 3b 0d 09 | 28 76 6f 69 64 29 55 4e |ullfp;..|(void)UN|
|00006270| 4c 49 4e 4b 28 65 5f 74 | 6d 70 6e 61 6d 65 29 3b |LINK(e_t|mpname);|
|00006280| 0d 20 20 20 20 7d 0d 0d | 20 20 20 20 2f 2a 20 69 |. }..| /* i|
|00006290| 6e 69 74 69 61 6c 69 7a | 65 20 65 76 65 72 79 74 |nitializ|e everyt|
|000062a0| 68 69 6e 67 20 74 68 61 | 74 20 77 6f 6e 27 74 20 |hing tha|t won't |
|000062b0| 63 68 61 6e 67 65 20 69 | 66 20 77 65 20 75 6e 64 |change i|f we und|
|000062c0| 75 6d 70 20 2a 2f 0d 0d | 20 20 20 20 69 66 20 28 |ump */..| if (|
|000062d0| 73 69 67 73 74 61 62 20 | 3d 20 73 74 61 62 65 6e |sigstab |= staben|
|000062e0| 74 28 22 53 49 47 22 2c | 61 6c 6c 73 74 61 62 73 |t("SIG",|allstabs|
|000062f0| 29 29 20 7b 0d 09 73 69 | 67 73 74 61 62 2d 3e 73 |)) {..si|gstab->s|
|00006300| 74 72 5f 70 6f 6b 20 7c | 3d 20 53 50 5f 4d 55 4c |tr_pok ||= SP_MUL|
|00006310| 54 49 3b 0d 09 28 76 6f | 69 64 29 68 61 64 64 28 |TI;..(vo|id)hadd(|
|00006320| 73 69 67 73 74 61 62 29 | 3b 0d 20 20 20 20 7d 0d |sigstab)|;. }.|
|00006330| 0d 20 20 20 20 6d 61 67 | 69 63 61 6c 69 7a 65 28 |. mag|icalize(|
|00006340| 22 21 23 3f 5e 7e 3d 2d | 25 2e 2b 26 2a 28 29 3c |"!#?^~=-|%.+&*()<|
|00006350| 3e 2c 5c 5c 2f 5b 7c 60 | 27 3a 5c 30 30 34 5c 74 |>,\\/[|`|':\004\t|
|00006360| 5c 30 32 30 5c 30 32 34 | 5c 30 32 37 5c 30 30 36 |\020\024|\027\006|
|00006370| 22 29 3b 0d 20 20 20 20 | 75 73 65 72 69 6e 69 74 |");. |userinit|
|00006380| 28 29 3b 09 09 2f 2a 20 | 69 6e 20 63 61 73 65 20 |();../* |in case |
|00006390| 6c 69 6e 6b 65 64 20 43 | 20 72 6f 75 74 69 6e 65 |linked C| routine|
|000063a0| 73 20 77 61 6e 74 20 6d | 61 67 69 63 61 6c 20 76 |s want m|agical v|
|000063b0| 61 72 69 61 62 6c 65 73 | 20 2a 2f 0d 20 20 20 20 |ariables| */. |
|000063c0| 6d 61 63 70 65 72 6c 69 | 6e 69 74 28 29 3b 0d 0d |macperli|nit();..|
|000063d0| 20 20 20 20 61 6d 70 65 | 72 73 74 61 62 20 3d 20 | ampe|rstab = |
|000063e0| 73 74 61 62 65 6e 74 28 | 22 26 22 2c 61 6c 6c 73 |stabent(|"&",alls|
|000063f0| 74 61 62 73 29 3b 0d 20 | 20 20 20 6c 65 66 74 73 |tabs);. | lefts|
+--------+-------------------------+-------------------------+--------+--------+
Only 25.0 KB of data is shown above.